首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-13 
第二个printf后的b为什么还是2呢?#include stdio.hmain(){int a0,b1,cc(a++)||(b++)printf(a%d,b

第二个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的值


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

热点排行