永发信息网

关于C 语言的题!若 int t, a=5,b=6,w=1,x=2,y=3,z=4,则经过 t=(a=w>x)&&(b=y>z),求b的 值?

答案:4  悬赏:40  手机版
解决时间 2021-03-08 12:13
  • 提问者网友:难遇难求
  • 2021-03-08 00:23
关于C 语言的题!若 int t, a=5,b=6,w=1,x=2,y=3,z=4,则经过 t=(a=w>x)&&(b=y>z),求b的 值?
最佳答案
  • 五星知识达人网友:第幾種人
  • 2021-03-08 01:51
很显然,b应该等于6

t=(a=w>x)&&(b=y>z)按照一般的左-》右编译器计算顺序,t=(a=w>x)&&(b=y>z)等价于
t = ((a=w>x)&&(b=y>z));

(a=w>x)&&(b=y>z)在计算时,(a=w>x)将会先于(b=y>z)计算;

a=w>x,由于=的优先级最低,w>x先计算,也就是说a最终将会等于bool值false,也就是0;

(a=w>x)&&(b=y>z),由于(a=w>x)已经等于false,不管(b=y>z)等于多少,这个表达式都将始终是false。因此,所有编译器对这个处理进行了优化处理,(b=y>z)将不会执行,显然b还是等于初始值6。

你可以用VC/VS,或者gcc编写一个小程序试试。
全部回答
  • 1楼网友:第四晚心情
  • 2021-03-08 05:37
b值为0。
  • 2楼网友:第四晚心情
  • 2021-03-08 04:17
t=(a=w>x)&&(b=y>z) 先赋值,a=w,所以a此时为1,b=y,b为3,因为x=2,所以a小于x,所以为假(0),只要1个为假,0&&任何数都为0,所以结果也为0.
  • 3楼网友:天凉才是好个秋
  • 2021-03-08 03:13
b=0 (false)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯