【发布时间】:2014-08-15 15:49:54
【问题描述】:
以下程序的输出与我预期的不一样。请向我解释一下逻辑表达式在该程序中的工作原理。
#include<stdio.h>
int main()
{
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf("%d, %d, %d, %d\n", i, j, k, m);
return 0;
}
我预期的输出是 -2, 3, 1, 1 输出为 -2, 2, 0, 1 为什么 j 和 k 不增加
【问题讨论】:
-
我不知道 C 但我的猜测是
||是一个短路运算符,而-2在强制转换为布尔值时计算为 true。当printf以数字形式输出时,该布尔值 true 变为 1。 -
@Chris:没错(除了没有强制;
&&和||产生类型为int的结果,值为0或1)。
标签: c