在C99标准中加入了非常好用的bool类型,但是今天在写程序的时候,发现一个很有意思的问题,程序如下:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool a = -1;
if(a+1)
printf("aaaaaaaaaaaaa\n");
return 0;
}
这个程序居然打印出了aaaaaaaaaaaa!惊讶之余,我开始思考为什么会打印呢?经过多方查资料才知道,原来当你给bool类型的值赋值一个非零值得时候,他的值并不是你付给的那个值,而是0x01,占用一个字节空间的数值类型!所以,a+1的就相当于1+1,结果当然是真嘞! |