1

可能重复:
为什么 sizeof(x++) 不增加 x?

#include<stdio.h>
int main(void)
{
  double num=5.2;
  int var=5;
  printf("%d\t",sizeof(!num));
  printf("%d\t",sizeof(var=15/2));
  printf("%d",var);
  return 0;
}

该程序给出了一个输出4 4 5。我不太明白为什么会这样。

  • 为什么第一个输出是 4?
  • 为什么varget 的值没有更新为 7?

运营商是如何sizeof工作的?

4

2 回答 2

3

表达式

!num
var=15/2

两者都评估为 int。 sizeof(int)在您的平台上始终为 4。

至于为什么 var 没有更新:

sizeof 是编译时运算符,因此在编译时 sizeof 及其操作数被结果值替换。操作数根本不被计算(除非它是一个可变长度数组);只有结果的类型很重要。

https://stackoverflow.com/a/8225813/141172

于 2012-07-24T05:34:15.237 回答
1

该运算符向您显示其参数sizeof的飞镖类型的大小。它不返回参数的结果。在您的平台上,一个整数是 4 个字节长,这就是您在这里学到的。如果你想要结果,只需剪掉sizeof.

于 2012-07-24T05:39:37.713 回答