use*_*985 31 c c++ visual-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.有人可以解释为什么会这样吗?
Fre*_*Foo 91
它被解析为c = a++ + b,并且a++意味着后增量,即在获取a计算值之后递增a + b == 2 + 5.
请永远不要写这样的代码.
Naw*_*waz 40
Maximal Munch Rule适用于这样的表达式,根据该表达式,表达式被解析为:
c = a++ + b;
Run Code Online (Sandbox Code Playgroud)
也就是说,a后递增(a++),因此当前的值a(在后递增之前)用于+操作b.
| 归档时间: |
|
| 查看次数: |
28711 次 |
| 最近记录: |