在论坛上看了个帖子
int i=2;
int j=sizeof(++i);
printf("%d",i);
就是问输出是多少,答案是2,为什么呢?
sizeof 操作符给出其操作数需要占用的空间大小, 它是在编译时就可确定的, 所以其操作数即使是一个表达式,
也不需要在运行时进行计算.( ++i )是不会执行的, 所以i的值还是2。
然后我自己又做了几个实验
int i=2;
int j=sizeof(i*=2);
printf("%d",i);
i的结果还是2
另外,还有一点很奇怪的
int i=2;
int j=sizeof(i*1.0);
printf("%d",j);
输出的是double的字节数,而不是int
本文深入探讨了C语言中sizeof操作符与三元运算符的结合使用,通过实例解释了sizeof操作符的运行时机与结果特性,以及三元运算符如何影响sizeof操作符的行为。特别关注了sizeof(i*=2)和sizeof(i*1.0)这两个表达式的输出结果,揭示了C语言底层实现的微妙之处。
71





