init a
sizeof(a)++;//合法,编译通过
++sizeof(a);//不合法,编译不过,报告说++需要合法的左值
如何解释?
左值就是有存储空间的,比如变量
sizeof(a)只是计算出一个结果,平时都是当常量使用的
为什么可以后++,而不能前++
难道后++时,sizeof(a)是变量,前++的sizeof(a)是常量?
这个问题显然不是我写出来的,是我在面试的时候被人问到的
相信应该是个非常重要的知识点
编译优化的说法看上去非常有道理,
但是如果会优化的话,写出4++之类的代码应该也没错吧?
可是4++是语法错误(为什么不会优化为5?),
sizeof(a)++反而会优化为5?
|