以下程序运行后的输出结果是()
int main() { int a=1,b=2,m=0,n=0,k; k=(n=b<a)&&(m=a) ; printf("%d,%d\n",k,m); return 0; }
A. 0,0 B. 0,1 C. 1,0 D. 1,1
n=b<a,应该是一个逻辑语句啊,b<a是0,而n的值本来初始化就是0,所以n=0结果是真,所以与运算前面为真是1,后面的m值也是1,故k为1,m为1,我不知道为什么答案是0,0
19137430266 回复 19137430266: 后面的m是0,不等于a,等于结果应该是1,0选c。。。。。
yeyuxin 回复 19137430266: n=0是赋值语句啊,n==0结果才是真
注意逻辑与运算符 `&&` 的短路性质。如果第一个操作数为假,那么第二个操作数将不会被计算。
1. 首先,计算 `(n = b < a)`。因为 `b`(2)不小于 `a`(1),所以 `(n = b < a)` 的结果为0(假)。 2. 由于第一个操作数是假,第二个操作数 `(m = a)` 就不会被计算,因为逻辑与运算符是短路的。 3. 因此,`k` 最终被赋值为0,而 `m` 并没有被赋值。
所以,程序的输出是 `0,0`。选项A是正确的。
这个题,错了,应该是D
快乐小土狗 回复 waver: IDE跑出来结果是0,0
算术运算符 > 关系运算符 > && > || > 赋值运算符
A
&&逻辑...
用户登录可进行刷题及查看答案
&&逻辑与运算,先执行n=b<a,得n=0,赋值表达式的返回值为赋值符号右边的值,即0,逻辑与运算结束,不执行m=a。m未被赋值,仍为0。
登录后提交答案