int a,b,c;a=b=c=1;++a||++b&&++c;计算后a,b,a=2 b=1 应该先算&& 是不是就是把++a||++b看成一个整体?如果是 那c应该=2 怎么会是3呢

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/31 14:03:03
int a,b,c;a=b=c=1;++a||++b&&++c;计算后a,b,a=2 b=1 应该先算&& 是不是就是把++a||++b看成一个整体?如果是 那c应该=2 怎么会是3呢
xSn@~=O=)$v*ZuH6 xW &^^|?]^m%&]6Vծ˺n2떦]W~dVKĪ rtX4"xx Zq$hKϏ^96| &u>Uׅ3#BVQw#N[rCiIwςJco. >9Gq ư'5B=8Y^ QD)cRH.ҤqjNld kh6$NQ;3n_1DG%='ܧ1gk]G333,ݝE?7IUêChxr!lw6VltC:XR']ިJ*$CPfsT5QVˊc=\D DClfa-c̏k *h)c#tFnnղ7'

int a,b,c;a=b=c=1;++a||++b&&++c;计算后a,b,a=2 b=1 应该先算&& 是不是就是把++a||++b看成一个整体?如果是 那c应该=2 怎么会是3呢
int a,b,c;a=b=c=1;++a||++b&&++c;计算后a,b,
a=2 b=1 应该先算&& 是不是就是把++a||++b看成一个整体?如果是 那c应该=2 怎么会是3呢

int a,b,c;a=b=c=1;++a||++b&&++c;计算后a,b,a=2 b=1 应该先算&& 是不是就是把++a||++b看成一个整体?如果是 那c应该=2 怎么会是3呢
当然不是这样.在c语言中,&&的优先级比||高,所以当这两个一起出现的时候,是先算&&再算||, 当然,||在c语言也有个陷阱.就是当||的前半部分为真的时候,就不执行后半部,只有前半部分为假的时候才执行后半部分. 本题中:a=b=c=1; 于是a,b,c的值都是1, ++a||++b&&++c; 中,&&的优先级高,所以先算++b&&++c, 再跟++a做||运算. 于是++a是||的前半部分.而++a的值此时是2,a的值就是2,即为真.于是就不做后半部分的运算. 也就没有++b&&++c的运算.于是b,c的值还是都为1. 这下明名为什么是a=2 b=1 c=1,而不是a,b,c都为2的原因了吧.