int a=2, b=3, c=0, 表达式: (a==b>1)+(a&&!c)+b/a*2.0
答案:2 悬赏:0 手机版
解决时间 2021-01-20 06:34
- 提问者网友:欺烟
- 2021-01-19 10:32
int a=2, b=3, c=0, 表达式: (a==b>1)+(a&&!c)+b/a*2.0
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-01-19 10:45
a == b > 1 --> a == (b > 1) --> a == int(b > 1) -- > False --> 0
a && !c --> a &&(!c) --> (a!=0) && (!c !=0) -- > True --> 1
b/a*2.0 --> (b/a) * 2.0 --> 1 * 2.0 --> 2.0
0 + 1 + 2.0 = 3.0追问最后一个为什么等于2.0而不等于3.0追答b 和a 都是整数,它们操作后的返回值也是整数,所以 3/2 = 1
3.0 /2 或者 3/2.0的结果才是1.5追问好的 谢谢
a && !c --> a &&(!c) --> (a!=0) && (!c !=0) -- > True --> 1
b/a*2.0 --> (b/a) * 2.0 --> 1 * 2.0 --> 2.0
0 + 1 + 2.0 = 3.0追问最后一个为什么等于2.0而不等于3.0追答b 和a 都是整数,它们操作后的返回值也是整数,所以 3/2 = 1
3.0 /2 或者 3/2.0的结果才是1.5追问好的 谢谢
全部回答
- 1楼网友:拜訪者
- 2021-01-19 12:23
(a==b>1): b>1 为true1, (a == 1)为false0,因此这里等于0
!c=1, a&&1=1,非零值都视为true
b/a*2.0=(3/2)*2=3
因此结果为4追问可是答案是三,后面的那个等于二追答我疏忽了,(3/2)是整数运算,运算结果是取整的,截掉尾数,(3/2)=1,1*2.0=2.0,然后把前面的值转换为双精度数1.0,再加2.0等于3.0
!c=1, a&&1=1,非零值都视为true
b/a*2.0=(3/2)*2=3
因此结果为4追问可是答案是三,后面的那个等于二追答我疏忽了,(3/2)是整数运算,运算结果是取整的,截掉尾数,(3/2)=1,1*2.0=2.0,然后把前面的值转换为双精度数1.0,再加2.0等于3.0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯