关于条件语句中的函数调用

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 被编译成如下图

test-condition

if语句里或的几个条件被拆分成对应个数的 test 语句块

所以,如果 bValue 为真在第一个 jne 处就跳转到括号里的语句块, TestFunc() 不会被调用。

(以上是vc6 sp6 编译 Debug 版本的二进制文件)

更多有趣日志

    No comments yet.