#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a[5]={0,1,0,0,0};
a[1]=3;
printf("\n bool is %d",a[1]);
printf("\n sizeof bool is %d and size of a is %d",sizeof(bool),sizeof(a));
bool b[10];
printf("\n bool is %d",b[1]);
}
该程序的输出是
bool is 1
sizeof bool is 1 and size of a is 5
bool is 4
问题 :
1> bool 存储 1 位那么为什么 sizeof(bool) 是 1 个字节?
2> 如果 bool 有 1 个字节,那么当我分配 a[1] = 3 时,为什么它打印 1 ?
3> 如果 bool 只考虑存储 1 & o 值,那么为什么 b[1] 打印值 3 ?
1> Bool 存储不是 1 位。没有什么是 1 位。一切都至少是 1 个字节。sizeof(bool)
是特定于平台的。仅有的sizeof(char)
保证为 1。
2> 隐式转换int
to bool
: (bool)3 == 1
3> 数组b
未初始化,它可以具有任何值。您只是访问一些内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)