int main ()
{
int a = 5,b = 2;
printf("%d",a+++++b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码提供以下错误:
错误:需要左值作为递增操作数
但是,如果我把整个空间a++ +和++b,然后正常工作.
int main ()
{
int a = 5,b = 2;
printf("%d",a++ + ++b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第一个例子中的错误是什么意思?
可能重复:
为什么+++++ b在C中不起作用?
我从David Simon的"嵌入式软件入门"第113页得到了这个.
我在下面看到这句话:
iHoursTemp = iHoursTemp + iZoneNew ---iZoneOld;
Run Code Online (Sandbox Code Playgroud)
你能真的在这条线上有三个减号吗?三重减号是什么意思?
我相信这是一个C编程声明.
以下代码让我感到困惑
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
Run Code Online (Sandbox Code Playgroud)
我预计输出为3,5,8,主要是因为a ++意味着2 + 1等于3,而3 + 5等于8,所以我预期3,5,8.事实证明结果是3,5,7.有人可以解释为什么会这样吗?
(注意:我偶然发现了这个,所以它可能不太实用,但我只是很好奇)
我希望在递增第二个值后打印出一个值,即两个值的总和.像这样的东西:
int first = 10;
int second = 20;
System.out.println(first + ++second); //31
System.out.println(first); //10
System.out.println(second); //21
Run Code Online (Sandbox Code Playgroud)
也许不是最新的代码,但它有效.但后来,我开始尝试.
System.out.println(first +++ second); //30
System.out.println(first); //11
System.out.println(second); //21
Run Code Online (Sandbox Code Playgroud)
没关系; 它意味着第一个在添加后增加,并且这里可以忽略空格.凉.但是之后...
System.out.println(first +++++ second); //"Invalid Argument", doesn't work
Run Code Online (Sandbox Code Playgroud)
而
System.out.println(first ++ + ++ second); //31
System.out.println(first); //11
System.out.println(second); //21
Run Code Online (Sandbox Code Playgroud)
工作正常,但由于某种原因,仍然不同
System.out.println(first + + + ++ second); //31
System.out.println(first); //10
System.out.println(second); //21
Run Code Online (Sandbox Code Playgroud)
也许是最奇怪的,
System.out.println(first + + + + + + second); //30
System.out.println(first); //10
System.out.println(second); //20
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?何时忽略运算符之间的空格,何时不是?为什么我可以写"+ + + + +",没有任何问题? …