c++语句运算顺序

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:54:20
解释一下如下的语句
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
执行后a与b的值各是多少
为什么a=w>x为0就不继续执行了,是因为&&的运算规则吗
&&是从左往右运算吗,只要左边为0就不计算右边了吗

&&和||有个名字叫 短路运算符 它的运算顺序是从左到右,如果左半部分的表达式已经可以决定整个表达式的值,则右半部分就被短路了, 不再计算. 因此在C++里面这两个运算符最好也是不要重载的

a为0,b为6

对于(a=w>x)&&(b=y>z)从左到右执行,但它为“且”语句,因此当第一个值可以确定整个表达式的值时就不再执行后面的语句
因为a=w>x值为0,所以不执行b=y>z
因此a的值为w>x的值,即0,b保持不变,不执行b=y>z即为6

a=0,b=6;
因为a=w>x等效于a=(w>x),此处w小于x,所以a=0;
而(a=w>x)&&(b=y>z);中&&是与运算符,它前面一个值是0;所以它后面的式子就不执行了,即b还是等于6