关于条件语句中的函数调用
February 20th, 2009
| Tags:
有同事问我在下面的代码中条件语句里
bool TestFunc(bool bIn) { return !bIn; } int main(int argc, char* argv[]) { bool bValue = false; if(bValue || TestFunc(false)) { printf("Hello World!\n"); } return 0; }
如果 bValue = true, 那么 TestFunc(false) 会不会被调用?我调试了一下发现 main 被编译成如下图
if语句里或的几个条件被拆分成对应个数的 test 语句块
所以,如果 bValue 为真在第一个 jne 处就跳转到括号里的语句块, TestFunc() 不会被调用。
(以上是vc6 sp6 编译 Debug 版本的二进制文件)
更多有趣日志
Leave a comment
| Trackback


