| 发表于:2008-01-10 22:48:205楼 得分:10 |
c++并不是强类型的语言,if后面表达式只要值不为0就表示判断成立。你可以看一下反汇编,当x是int时,if (x)的反汇编是 - assembly code
00da1a05 cmp dword ptr [x],0
00da1a09 je wmain+58h (0da1a38h)
只是跟0比较了一下。当a是bool时,if (a)的反汇编是 - assembly code
00da1a67 movzx eax,byte ptr [a]
00da1a6b test eax,eax
00da1a6d je wmain+0bch (0da1a9ch)
test eax,eax说白了也就是测试eax是否为0。所以,c++之中不会转换为bool,主要还是当作数字处理。 | | |
|