c语言短路效应是什么?

c语言短路效应是什么?

void  main()
{
int a = 0;
int b = 2;
a&&b++;     
printf("%d,%d", a, b);
getchar();

}
短路效应,有一个不符合条件,后面就懒得检测。这句话是什么意思?

阅读 4.5k
4 个回答

如果aFALSE,那么,无论b是什么,a&&b++ 返回值都是FALSE
没有必要再计算后边的表达式了,所以不需要再执行b++了。

当然,其他语言里可以规定要计算b++,但是 C 语言就是这样规定的,至于这样做好不好,就不好说了。

新手上路,请多包涵

&&运算符,第一个 a 为False就是False,就不会再判定b,这是规定.

这个写法转换下 其实是

if( a符合预期条件) {
    b++;
}

那么a都不符合了,b++ 不应该被执行。

新手上路,请多包涵

a=0,b=2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进