请教:IF 语句中多条件判断的顺序

非完美主义者 2010-01-17 03:35:15
if ( conditionA && conditionB ) 和 if ( conditionA || conditionB ),是先判断conditionA还是conditionB ?跟编译器有没有关系?
...全文
6563 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-01-18
  • 打赏
  • 举报
回复
VC6调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
不知名小ITer 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 qyshooter 的回复:]
if ( conditionA && conditionB ) 和 if ( conditionA || conditionB ),是先判断conditionA还是conditionB ?跟编译器有没有关系?
[/Quote]
和编译器无关...先判断conditionA...
如果conditionA是false的话,那么if ( conditionA && conditionB )就不用判断了,直接为false...
如果conditionA是ture的话,那么if ( conditionA || conditionB )就不用判断...直接是ture...
这样就会提高程序的效率...

记得好像是<<TCPL>>里面提到过的...
jernymy 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 stardust20 的回复:]
先判断conditionA再判断conditionB和编译器无关
不过对于&&只要conditionA为假conditionB就不判断了
对于||只要conditionA为真conditionB就不判断了
因为结果已经知道了
[/Quote]

zhangyinze123 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 stardust20 的回复:]
先判断conditionA再判断conditionB和编译器无关
不过对于&&只要conditionA为假conditionB就不判断了
对于||只要conditionA为真conditionB就不判断了
因为结果已经知道了
[/Quote]

likee003 2010-01-17
  • 打赏
  • 举报
回复
先判断conditionA再判断conditionB和编译器无关
不过对于&&只要conditionA为假conditionB就不判断了
对于||只要conditionA为真conditionB就不判断了

看一下编译原理就知道了。
Randyqiu 2010-01-17
  • 打赏
  • 举报
回复
1L和3L解释都很好,我以为。
sagegz 2010-01-17
  • 打赏
  • 举报
回复
先A再B,记住短路原则就行.
suchx 2010-01-17
  • 打赏
  • 举报
回复
C语言是短路求值的,都是先判断第一个表达式,如果能求出结果,后面的判断就不会执行了。是先判断条件A,再判断条件B。
pang123hui 2010-01-17
  • 打赏
  • 举报
回复
先conditionA后conditionB,一般和编译器没有关系


不过要注意的是,对于&&只要conditionA为假conditionB就不进行判断了
对于||只要conditionA为真conditionB就不进行判断了
stardust20 2010-01-17
  • 打赏
  • 举报
回复
先判断conditionA再判断conditionB和编译器无关
不过对于&&只要conditionA为假conditionB就不判断了
对于||只要conditionA为真conditionB就不判断了
因为结果已经知道了

69,742

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧