C语言a+=b++==0表示什么意思
4个回答
展开全部
首先,b++表示对b做自加运算,我们用c代替,c=b++;
然后,a+=b++ 等于 a+=c,即a=a+c,也就是说“==”之前部分是给a赋值的,我们用d代替,即d=a+c;
最后是一个逻辑判断d==0,也就是判断前面计算出物胡来的a是否等于0.
这拦蚂胡里要注意的一个地方是b++,不是++b,也就是说在当简拦前这一次判断的时候b并不自加,而是在当前判断执行完之后才自加1.
比如初始a=1, b=2,b没有自加,a=a+b=1+2=3,那么这句话这次是在判断“3==0”,下次再判断的时候b才自加变成了2,a=a+b=3+2=5,相当于在判断“5==0”,依次类推即可。
然后,a+=b++ 等于 a+=c,即a=a+c,也就是说“==”之前部分是给a赋值的,我们用d代替,即d=a+c;
最后是一个逻辑判断d==0,也就是判断前面计算出物胡来的a是否等于0.
这拦蚂胡里要注意的一个地方是b++,不是++b,也就是说在当简拦前这一次判断的时候b并不自加,而是在当前判断执行完之后才自加1.
比如初始a=1, b=2,b没有自加,a=a+b=1+2=3,那么这句话这次是在判断“3==0”,下次再判断的时候b才自加变成了2,a=a+b=3+2=5,相当于在判断“5==0”,依次类推即可。
展开全部
其实是a=a+b++==0的简写;从运算符的优先级可知:++最高,+次之,==再次之,而=最低,即先毕侍进行b++运算,在进行a+(b++)运算,其次进行竖数顷a+(b++)==0运算,最总吧a+(b++)==0的结果赋给a。这个可以编程应余陆正。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
符号的优先级是:
在这个算式中是++最高
++是2级,其次==是7级(先左后右),最后是+=是14级这里单指加了以后的赋值(先右后左)
然后关于==我做了个小验证,
#include <stdio.h>
int main(void)
{
int a,b;
a=2;b=3;
a=(b==0);
printf("%d,%d",a,b);
}
结果是a为闷神0,b为3。说明在用==(等于)的时候不像=(赋值)完全改变了赋值对象的值只是单次的改变一次对象的值。
例如你的a=1,b=2
计算顺序是先b做自加1操作这时b才变为3,然明枝后做b==0,如上的小蚂槐亏验证,做了这个运算后不会改变b的值(这是b里面的值还是3)只是在参加运算的时候b单次变为0,,然后做a+=b(这里的b为0)故这时候a还为1。所以执行这个语句以后a=1,b=3。
以上只是自己个人的观点,不一定对但还是希望能帮到你。
参考资料:http://wenku.baidu.com/view/f57f4e10f18583d04964594f.html(字符优先级表)
在这个算式中是++最高
++是2级,其次==是7级(先左后右),最后是+=是14级这里单指加了以后的赋值(先右后左)
然后关于==我做了个小验证,
#include <stdio.h>
int main(void)
{
int a,b;
a=2;b=3;
a=(b==0);
printf("%d,%d",a,b);
}
结果是a为闷神0,b为3。说明在用==(等于)的时候不像=(赋值)完全改变了赋值对象的值只是单次的改变一次对象的值。
例如你的a=1,b=2
计算顺序是先b做自加1操作这时b才变为3,然明枝后做b==0,如上的小蚂槐亏验证,做了这个运算后不会改变b的值(这是b里面的值还是3)只是在参加运算的时候b单次变为0,,然后做a+=b(这里的b为0)故这时候a还为1。所以执行这个语句以后a=1,b=3。
以上只是自己个人的观点,不一定对但还是希望能帮到你。
参考资料:http://wenku.baidu.com/view/f57f4e10f18583d04964594f.html(字符优先级表)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询