“sizeof”之后的赋值表达式是否从未执行过?

时间:2013-09-04 03:40:39

标签: c expression sizeof

e.g。

    int a = 3;
    int b = sizeof(++a);
    int c = a;

结果c等于3或4吗? 结果是否取决于特定的编译器?

1 个答案:

答案 0 :(得分:0)

规范规定,增量运算符 NOT sizeof运算符中使用时会生效。

从抽象的角度来看,这也是有道理的。具体来说,sizeof运算符返回对象使用的字节数。虽然递增一个整数甚至一个指针确实 NOT 改变了整数的大小,但++运算符会误导新程序员认为大小确实发生了变化。

如果有兴趣查找主题“副作用”,可以进一步讨论这个主题。