<分区>
我原以为此代码片段会打印 3,因为 if 条件为假,y++ 将执行,但它会打印 2,不知道为什么……谢谢!!
int x = 3;
int y = 2;
printf("%d\n", (x<y) ? x++ : y++);
//这会打印 2
<分区>
我原以为此代码片段会打印 3,因为 if 条件为假,y++ 将执行,但它会打印 2,不知道为什么……谢谢!!
int x = 3;
int y = 2;
printf("%d\n", (x<y) ? x++ : y++);
//这会打印 2
最佳答案
x++
和y++
是后递增的。也就是说,它们返回变量的当前值,然后将其加一。
预增量为++x
或++y
。这些递增然后返回新值。
前递增和后递增(和递减)在编写循环控件时都是有用的东西,这就是为什么 C 支持两者。
(本来,如果我没记错的话,C只支持前自增和后自减,因为它开发的机器上恰好有指令封装了这些行为。但是随着C转移到其他系统,并且随着人们开始注意到他们想要两者的前和后,这是普遍的。)
请注意,这意味着 c++
语言被错误命名。它应该被称为 ++c
-- 我们希望在我们使用它之前对其进行改进,而不是之后!
关于c++ - 知道为什么下面的代码片段打印 2 而不是 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896835/