int a = 0; if(++a >5) cout<<a;这里判断语句为false,那么a还会+1吗?是不是说判断语句不管是true还是false,里面的赋值、递增、递减都被执行了,变量的值都被修改了?
根据运算符优先级,if语句会先执行++a,使得a的值加1,结果为1
然后再判断a>5,由于a值为1,所以if条件不成立
综合以上,对于你的提问,结果是if语句必须先执行后才能确定是true还是false,明白这个顺序你应该就知道答案了
++a >5这条语句的a会加一,要a加一以后才会判断条件,++是单目运算符,优先级比关系运算符高。
if(++a >5)先执行++a,a=1,然后执行if(a>5),a=1,a>5不成立,所以cout << a不执行
1.赋值、递增、递减只要参与了逻辑表达式的计算,都会执行
2.如果有多条赋值、递增、递减参与逻辑表达式,但由于三目运算符(条件预算符)或者是短路逻辑判断会只执行对应的值改变
举个例子,下面的代码只会输出一行02
int a=1,b=2,c=3;
if (--a && b++)
cout << a << b << endl;
cout << a << b << endl;