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

1个回答

  • 很显然,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编写一个小程序试试.