我有一小段关于sizeof
与三元运算符的运算符:
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a = true;
printf("%zu\n", sizeof(bool)); // Ok
printf("%zu\n", sizeof(a)); // Ok
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
return 0;
}
Output (GCC http://ide.geeksforgeeks.org/NE9Cfo):
1
1
4 // Why 4?
但在这儿,
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
三元运算符返回boolean
类型和尺寸bool
类型是1
C 中的字节。
Then 为什么sizeof(a ? true : false)
给出四个字节的输出?
这是因为你有#include <stdbool.h>
。那个标题定义宏 http://en.cppreference.com/w/c/types/boolean true
and false
to be 1
and 0
,所以你的语句看起来像这样:
printf("%zu\n", sizeof(a ? 1 : 0)); // Why 4?
sizeof(int)
在您的平台上是 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)