首页 > 试题广场 >

已知 char c=48;int i=1,j=10;执行语句

[单选题]
对于代码段
char c = 48;
int i = 1, j = 10;
j = !(c > j)&&i++;
则i和j的值分别是1和0。请问这句话是正确的吗?
  • 正确
  • 错误
运算符的优先级,先算(),()为真,则()等于1,即j=!1&&i++;再算!,即j=0&&i++;因为是&&,左边已经是假,右边就没有必要再算,j的答案就为0;而右边没有算的必要,i不会自加1;所以i还是初值1.
发表于 2018-01-17 14:31:23 回复(1)
更多回答
=的优先级低于 && 所以,优先执行 !c ,因为c=48,说以!(c>j)等于0, 由于&&是短路求值的,所以不会执行后面的i++;逻辑表达式的值为false 即值为0;所以,j的值为 0;i的值仍然是 1;
发表于 2017-08-24 21:02:07 回复(3)
这题其实就是考察&&和||运算符的短路特性:
运算顺序:
1、先是c>j,得j=(!1)&&i++;
2、然后运算j=0&&i++;
由于0&&任何数字都是等于0,因此会自动终止计算,不再计算后面的表达式,即i没有变化,等于1.
||运算符也是依次类推
发表于 2018-09-06 13:36:27 回复(0)
char c = 48 难道不是ASCII码吗?ASCII码48是0啊
发表于 2020-04-26 16:52:31 回复(6)
题目不是说j=10吗
发表于 2018-08-04 10:46:12 回复(1)
运算符优先级表

发表于 2023-09-12 17:14:49 回复(0)
由于赋值操作符“=”的优先级低,先算赋值操作符右边的,先算c>j为真,然后再算!(c>j)为假,由于&&操作符左边为假就不再计算&&操作符去右边的表达式,所以i++这个表达式没有计算,i仍然为1,然后赋值操作符左边为假,从语言规定0为假非0为真,即j=0
发表于 2023-06-07 23:43:16 回复(2)


本题中一是要看优先级,二是考查结合性
首先,优先级:括号 > ++ > ! >&&


所以先算括号里的是必然的,j = !1 && i++;

那之后就是要根据优先级去算i++了吗?

当然不是,因为这时候我们的 !1和i++是&&的两个操作数;

先要遵守结合性;&&的结合性也就是运算顺序:从左到右

所以会先算!1 = 0;

j = 0 && i++;

而左边算完之后为0,又因为&&是有0就是0,岁月右边的i++不会计算;

最后i = 1, j = 0;

相关博客:https://blog.csdn.net/2302_76941579/article/details/134281219?spm=1001.2014.3001.5502

发表于 2023-11-28 18:39:43 回复(0)
题目考察的是 短路与的特点 还有运算符优先级
 短路与的特点: A&&B 若A为假,则编译器不判断B。一假全假,没有必要判段B。
运算符优先级: ! 大于 && 大于 =         !和 = 的结合顺序自右至左  &&结合顺序从左往右。
先判断   !(c>j)    为 假 为0   根据逻辑与的短路特性,不再执行后面的判断。
此时 j = 0   i = 1

发表于 2023-08-08 20:35:34 回复(0)
i不应该是2吗
发表于 2022-10-11 11:38:45 回复(1)
&&的前面一旦为0,后面i++便不会运行
发表于 2022-06-14 09:23:48 回复(0)

 step1.判断优先级:()是一级优先级;!与 ++ 是二级优先级

step2.先计算括号内( c > j ) 为真 ——>  1

step3.计算 !与 ++ :

(c > j)为真——>! (c > j)为假——>0 ; 

step4. &&具有短路特性,左操作数为假,不会再计算右操作数,即此时

j = !(c > j)&&(不计算i++);
j = 0;
i不进行++,因此i仍等于1


发表于 2022-01-23 20:50:20 回复(0)
想的是对的,选的是错的。我有悔。
发表于 2019-09-04 16:32:06 回复(0)

&&具有短路作用

发表于 2019-02-25 16:58:38 回复(0)
看成!=了
发表于 2018-09-06 09:50:21 回复(0)
非常同意二楼的观点,左边已经为假,没有再继续的必要
发表于 2018-05-29 15:30:03 回复(0)
A&&B    若A为真,则继续执行判断B的真假:若A为假,则没有必要在执行B。
A||B    若A为假,则继续执行判断B的真假;若A为真,则没有必要在执行B。
发表于 2018-05-02 20:03:23 回复(0)