我是编程新手,被介绍给sizeof
C的操作符。 玩它,我发现了以下有趣的事情:
long long int a = 100;
printf("%d %d\n", sizeof(a), sizeof(!a)); // Output : 8 1
Run Code Online (Sandbox Code Playgroud)
我知道sizeof(a)
(在我的系统中)是 8。但我不明白为什么 sizeof(!a)
变成 1。
是因为 !a 变为 0,存储为char
吗?
此外,以下代码更增加了我的困惑:
long long int a = 100;
char b = 9;
printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(a+b), sizeof(!a+b)); // Output : 8 1 8 4
Run Code Online (Sandbox Code Playgroud)
谁能解释一下,这里发生了什么?由于类型转换,char 应该转换为 long long int,对吗?如果是这样,我理解8 1 8
输出的部分。但是为什么 sizeof(!a+b) 是 4?
根据This answer,sizeof()
返回size_t
4 个字节的大小。但无法从中得到我的查询的答案。