int num = 5;
int ret = num++ * ++num;
int num = 5;
++(num++);
Demo7.java:5: 错误: 意外的类型
++(num++);
^
因为(num++)是存在于小括号以内,按照计算优先级处理,首先计算小括号里面的内容,但是因为小括号是一个整体,对外的数据时num++的结果,这是一个常量!!!
自增自减运算符,只能操作变量,不可以操作常量。
语法报错!!!
int count=0;
for(int i=0;i<100;i++){
count = count++;
}
System.out.println("count="+count);
首先 count++ 是一个有返回值的表达式,返回值是 count 自加前的值,Java 对自加处理的流程是先把 count 的值(不是引用)拷贝到一个临时变量区,然后对 count 变量加1,接着返回临时变量区的值。
所以上面代码块中第一次循环的执行步骤是 JVM 把 count 值(0)拷贝到临时变量区,然后 count 值加 1,这时 count 的值是 1,接着返回临时变量区的值(值是 0),最后返回值赋值给 count,此时 count 值被重置成 0;所以上面代码语句 count = count++; 可以按照如下代码来理解:
int autoAdd(int count){
int temp=count;
count=count+1;
return temp;
}
原文:https://www.cnblogs.com/lcy123/p/14956310.html