以下代码打印7.它增加a的值,但b保持不受影响。后增量运算符不应该先递增,然后使用它在这种情况下所做的值。它应该是相反的方式。为什么这种行为改变?此外,也许更重要的是,为什么b不预先递增?
int main() {
int a=5, b=2;
printf("%d", a+++b);
}
答案 0 :(得分:1)
你有一个明确定义的行为。哪里
a++ + b = 5 +2 = 7
如果您有像
这样的预增量运算符printf("%d\n",++a+b);
然后输出为8
++
运算符的优先级高于+
一元加运算符,因此从左到右的评估
a+++b
将会发生
a++ + b
会抓住你7
通过首先获取变量的值来完成后增量,在本例中为5,所以
a= 5
和b=2
答案 1 :(得分:0)
在您的代码a
中添加b
,然后递增