15得票1回答
我在一个Bash脚本中遇到了"unary operator expected"的错误。

在我的Bash脚本中,我有一个函数来返回0或1(true或false),以供后续的main函数作为条件判断。function1 () { if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then ...

8得票2回答
C和C++中一元算术运算符+存在差异的原因是什么?

在C语言中,一元加运算符被称为“一元算术运算符”,不可用于指针(C标准6.5.3.3 一元算术运算符)。 1. 一元+或-运算符的操作数应该是算术类型;对于~运算符,是整数类型;对于!运算符,是标量类型。 因此,这个程序将不能编译。 #include <stdio.h>...

38得票3回答
在这种情况下,C语言是否正确处理了sizeof(...)和sizeof...?

在下面的代码中,函数test和test2是否等价? typedef int rofl; void test(void) { rofl * rofl = malloc(sizeof(rofl)); // Is the final rofl here the TYPE? } void...

63得票5回答
“int* p=+s;”做了什么?

我在这里看到了一个奇怪类型的程序 here。 int main() { int s[]={3,6,9,12,18}; int* p=+s; } 以上程序在 GCC 和 Clang 编译器上进行了测试,两个编译器都可以正常工作。 我很想知道 int* p=+s; 是做什么...

21得票5回答
当p指向一个整型数组的索引时,'-1[p]'是什么?

今天我遇到了一个C语言谜题,它给我带来了新的惊喜。 我没想到下面的例子中的-1[p]会编译通过,但它确实通过了。实际上,x的值最终是-3。 int x; int array[] = {1, 2, 3}; int *p = &array[1]; x = -...

7得票1回答
[expr.unary.op]/9似乎暗示下面的类型A不能应用`operator !()`。但编译器与此不同意。

[conv]/4: 某些语言结构要求将表达式转换为布尔值。在这种情况下出现的表达式e被称为上下文转换为bool,当且仅当声明bool t(e);对于一些虚构的临时变量t是良好形式的(11.6)。 现在考虑以下代码片段。它无法编译,无论是在clang、GCC还是VS中。 struct ...

8得票1回答
在R语言中,S4类的一元加运算符

我正在尝试在R中使用S4类,并尝试为我的对象定义一个加(+)运算符,即重载加号运算符。我成功地重载了二元+,但我无法弄清如何重载一元加运算符。以下是我想要实现的最小工作示例(一元运算符不起作用): setClass("HWtest", representation(expr...

31得票9回答
一元加运算符有实际用途吗?

一元+运算符是否只是为了与一元-运算符对称而被包含在C++中,还是它在C++代码中具有实际用途? 在这里搜索,我发现了C语言中一元'+'运算符的作用是什么?,但那里唯一有用的情况涉及预处理器宏。虽然这些很有用,但它们似乎只是一些不太常见的情况,并且涉及到宏。是否有任何涉及更常见C++代码的用例?

9得票5回答
在函数返回值上使用一元&运算符

我想在函数后面使用一元'&'运算符来操作函数的返回值。然而,我得到了一个编译时错误(我使用MinGW中的gcc)。 以下是我编写的代码,以便更好地理解我的问题: test.c: 在函数'main'中: test.c:8:12: 错误:需要左值作为一元'&'的操作数 int funct...

7得票1回答
为什么加号和正号在数组语法中的行为很奇怪?

在这个加号运算符的问题之后,我有一个跟进问题。我们知道plus和uplus之间的区别,因此1+2会得出3,就像1++2或者1++++++++2一样。奇怪的事情发生在数组语法中,考虑以下例子: >> [1 ++ 2] ans = 1 2 % Two unary p...