一定要注意哦!自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误滴!
里面操作变量和操作数值有什么区别
里面操作变量和操作数值有什么区别
2016-11-07
如果写5++,编译器默认将5看成变量,未经声明而且违反了变量命名规则中标识符不能以数字开头,会报出invalid argument to opreate--无效参数操作。如果编译器默认了5为数值,那么5++意义何在呢?要知道5这个数值在内存中不占空间,只在运算时存储在cpu的数据寄存器中。变量运算操作的结果可以返回存储到变量所属内存中,数值运算操作的结果没有地方可以存放,这样5++的结果会被丢弃。为了防止这样的无效运算,编译器会在编译期时就将一些数值运算计算出结果存到二进制的class文件中,如:System.out.println(9+1),表面上,运行后才得出10,其实在编译期得到的二进制代码就是:System.out.println(10)。这里可以看出,自增自减是运行期运算的,而不是编译期。c语言中有自增自减运算,你可以结合理解下。
以上纯属个人理解,如有疑问,可以互相探讨下,欢迎提问!共同进步!
举报