小编ste*_*eve的帖子

为什么 C 中的 sizeof 运算符在 NOT 操作的情况下会给出不同的输出?

我是编程新手,被介绍给sizeofC的操作符。 玩它,我发现了以下有趣的事情:

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 answersizeof()返回size_t4 个字节的大小。但无法从中得到我的查询的答案。

c memory

3
推荐指数
1
解决办法
71
查看次数

标签 统计

c ×1

memory ×1