设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为( )。 A. 1 B. 2 C. 4 D. 3
时间: 2023-08-19 08:03:48 浏览: 2192
首先,按照运算符优先级,大于号(>)比赋值运算符(=)优先级高,所以 a>b 会先计算,若 a>b 为 true,则 m 的值被赋为 1,否则为 0。同理,c>d 会先计算,若 c>d 为 true,则 n 的值被赋为 1,否则为 0。
因为 b 大于 a,所以 a>b 的结果为 false,所以 m 的值为 0。而 d 大于 c,所以 c>d 的结果为 false,所以 n 的值为 0。
因此,n 的值为 0,选项 A、B、C 都不正确,正确答案是 D。
相关问题
设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后n的值是
在执行语句 `(m=a>b)&&(n=c>d)` 时,会先进行 `a>b` 的比较,因为 `a` 的值是 1,`b` 的值是 2,所以结果为 false,即 `m` 的值为 false。
由于 `&&` 运算符是短路运算符,即如果第一个操作数为 false,则不再计算第二个操作数的值,因此 `n=c>d` 不会被执行。
因此,`n` 的值不会被赋值,它的值仍然是初始值 2。
设有定义:int m=1,n=-1;则执行语句printf(”%d\n",(m--&&++n);后的输出结果是( ) A、 -1 B、 0 C、 1 D、 2
执行语句`printf("%d\n", (m-- && ++n));`会先执行逻辑运算符`&&`左边的表达式`m--`,此时`m`的值为1,将`m`的值减1,即`m`的值变为0,因此表达式`m--`的值为1。
由于`&&`是逻辑与运算符,左边的表达式为1时,才会继续执行右边的表达式。因此,程序会执行`++n`,将`n`的值加1,即`n`的值变为0。同时,`&&`运算符的结果为1。
最终,`printf`函数输出的结果为1。因此,选项C“1”是正确答案。