有关C语言中bool类型的思考

在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,结果当然是真嘞!

你可能感兴趣的:(C语言,bool值)