增量运算符不工作。
我在学习C语言表达式。我还在变量上尝试了不同的增量运算符组合(前缀和后缀),但输出结果是相同的。
int i=-3, j=2 ,k=0,m;
m=++i&&++j||++k;
printf("%d%d%d%d\n",i,j,k,m);
我希望输出为 -2311
但结果是 -2301
。
最佳答案
i
和 j
递增,因为 i
需要计算。 j
也需要计算,因为 i
不为零。
但是由于这个组合表达式是非零的,||
短路,并且 k++
不被评估或执行。
另一方面,按位运算符不会短路。他们也不转换为 bool 值。如果您想评估所有条件并保持相同的结果,您可以这样写
m= (!!++i) & (!!++j) | (!!++k);
使用双重否定技巧将整数值转换为 bool 值。
或者省去另一条语句并简化为(由 user694733 提供):
++i; ++j; ++k;
m = i && j || k;
关于c - 为什么变量没有增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54672173/