我今天看到了一个有趣的声明,其中包含后增量和前增量。请考虑以下程序-
#include <stdio.h>
int main(){
int x, z;
x = 5;
z = x++ - 5; // increase the value of x after the statement completed.
printf("%d\n", z); // So the value here is 0. Simple.
x = 5;
z = 5 - ++x; // increase the value of x before the statement completed.
printf("%d\n", z); // So the value is -1.
// But, for these lines below..
x = 5;
z = x++ - ++x; // **The interesting statement
printf("%d\n", z); // It prints 0
return 0;
}
那个有趣的陈述实际上发生了什么?后增量应该在语句完成后增加 x 的值。那么对于该语句,第一个 x的值保持为 5。在预增量的情况下,第二个 x的值应该是 6 或 7(不确定)。
为什么它给z的值是0?是5 - 5还是6 - 6?请解释。