C 运算符的大小不为';t计算子表达式?

C 运算符的大小不为';t计算子表达式?,c,operators,sizeof,C,Operators,Sizeof,可能重复: #包括 内部主(空) { 双数=5.2; int-var=5; printf(“%d\t”,sizeof(!num)); printf(“%d\t”,sizeof(var=15/2)); printf(“%d”,var); 返回0; } 程序给出了一个输出45。我不太明白为什么会这样 为什么第一个输出是4 为什么var的值没有更新为7 运算符的大小是如何工作的?表达式 !num var=15/2 两者的计算结果均为整数。sizeof(int)在您的平台上始终为4 至于var

可能重复:

#包括
内部主(空)
{
双数=5.2;
int-var=5;
printf(“%d\t”,sizeof(!num));
printf(“%d\t”,sizeof(var=15/2));
printf(“%d”,var);
返回0;
}
程序给出了一个输出
45
。我不太明白为什么会这样

  • 为什么第一个输出是4
  • 为什么
    var
    的值没有更新为7
运算符的大小是如何工作的?

表达式

!num
var=15/2
两者的计算结果均为整数。
sizeof(int)
在您的平台上始终为4

至于var未更新的原因:

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

表达式

!num
var=15/2
两者的计算结果均为整数。
sizeof(int)
在您的平台上始终为4

至于var未更新的原因:

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


操作符的
sizeof
显示其参数的省道类型的大小。它不会返回参数的结果。在您的平台上,整数的长度为4字节,这就是您在这里学习的内容。如果想要得到结果,只需去掉
sizeof

sizeof
操作符将显示其参数的省道类型的大小。它不会返回参数的结果。在您的平台上,整数的长度为4字节,这就是您在这里学习的内容。如果你想知道结果,请删掉
sizeof

为什么
var
没有更新???@sasidhar:看看你问题下面神秘人的评论。为什么
var
没有更新???@sasidhar:看看你问题下面神秘人的评论。虽然我接受我的问题,但碰巧是另一个问题的重复,一个更合适的标题指向另一个问题,我可能从来没有提出过这个问题。没有在搜索中出现。无论如何,谢谢各位。虽然我承认我的问题恰好是另一个问题的重复,所以,一个更合适的标题指向另一个问题,我可能从来没有提出过这个问题。没有在搜索中出现。无论如何,谢谢你们。