[英]What does the operation c=a+++b mean?
以下代码使我感到困惑
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
我期望输出为3,5,8,主要是因为a ++的意思是2 +1等于3,而3 + 5等于8,所以我期望3,5,8。 原来结果是3,5,7。 有人可以解释为什么会这样吗?
它的分析为c = a++ + b
,和a++
装置后增量,取的值后,即增量a
来计算a + b == 2 + 5
。
请不要写这样的代码。
a ++是后递增的,即表达式使用a的值, 然后加 1。
c = ++ a + b可以满足您的期望。
这是不良编程风格的一个示例。
这是相当不可读的,但是它增量后a
所以总结的当前值a
到b
,之后增加a
!
在表达式之后对a ++求值。
c = ++ a + b; 会给你你的想法。
在表达式中计算a的值后,后递增运算符a ++更改a的tge值。 由于a的原始值为2,因此用于计算c。 在评估++之后,更改a的值以反映新值。
a ++ + b ..it给出结果7,由于后置增量运算符,a的表达式值更新为3之后
根据最长匹配规则,在编译器的词法分析阶段将其解析为a ++ + + b。 因此,结果输出。
这里c = a +++ b; 表示c =(a ++)+ b; 即发布增量。 在a ++中,将在下一步打印a,b和c时进行更改。 在++ a中,即前缀递增,更改将在同一步骤中发生,并且输出为8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.