读书人

第二个printf后的b为什么还是2呢?该如

发布时间: 2012-02-13 17:20:26 作者: rapoo

第二个printf后的b为什么还是2呢?
#include "stdio.h"
main()
{
int a=0,b=1,c;
c=(a++)||(b++);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(a++)||(b++);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(a-=2)||(b++);
printf("a=%d,b=%d,c=%d\n",a,b,c);
c=(++a)||(b++);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

为什么我运行后,第二个printf后的b为什么还是2呢?不是应该加再1吗?

[解决办法]
短路求值你忘了吗?
[解决办法]
||,是有求值顺序的,假如A||B,那么首先确认A是否是真,若为真,则不再继续求B的值
反之,才继续求B的值


同样有求值顺序的,还有&&,?:运算符

读书人网 >C++

热点推荐