在底层中其基本判断实现逻辑为,
mov eax,value
neg eax
sbb eax,eax
neg eax
jz 根据是否为零实现跳转
只要value不为零,则经过上述运算后,eax都为1,即TRUE
若value为零,则eax为零,最终根据结果选择跳转。
#include <stdio.h>
void main()
{
bool b = true
printf("%d\n",b)
bool c = false
printf("%d\n",c)
}
扩展资料:
布尔数组中存放的是布尔值(元素),布尔值只有true 和false两种结果,其中,常量false可以理解为和int常量0等价,常量true可以理解为int常量1等价,在计算机中,实际上非0的int值都认为是true。
正因为布尔数组的这种特性,使得其在有些程序中进行使用可以起到优化的作用,甚至是事半功倍的效果。比如在搜索中就经常用到,可以用布尔数组区分那些经过处理的和没有经过处理的数据,避免了一些不必要的重复。
NULL=0
FALSE=0
TRUE记得是-1,但是如果用于if语句中,任何非0值都是true。但是TRUE一个宏,无法覆盖所有情况。
所以切记不要写出TRUE == (表达式)这样的判断,因为这样的判断往往都是错误的
举例来说,
int bitmask = 0x0010000
if(~bitmask) //这是true的
if(TRUE == ~bitmask) //虽然你想要达到的目的和上面一样,但是实际这会是false。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)