我正在学习 C。我遇到了以下程序 -
#include <stdio.h>
int main() {
int var1 = 2, var2 = 6;
var2 = var2 || var1++ && printf("Computer World");
printf("%d %d\n", var1, var2);
return 0;
}
在 Ubuntu 10.10 上使用 gcc 4.4.5 编译后,我得到的输出为 -
2 1
我了解如何将“var2”设置为 1。
即使在'var1'上有一个自增运算符,为什么当我们看到控制台输出时它没有自增?
最佳答案
var2 || var1++ && printf("Computer World");
是一个逻辑运算,所以如果 var2
是 true
(var2 不等于零)那么第二个逻辑运算 var1++ && printf("Computer World ");
将不会被执行(它被称为 short-circuit operation )。所以这就是 var1
没有递增的原因
尝试以这种方式反转您的逻辑操作,您将获得递增的 var1
:
var2 = var1++ && printf("Computer World") || var2;
关于对增量运算符的使用感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898866/