Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法调用期间赋值和递增值_Java_Increment_Primitive - Fatal编程技术网

Java 方法调用期间赋值和递增值

Java 方法调用期间赋值和递增值,java,increment,primitive,Java,Increment,Primitive,有人能解释一下为什么这样的调用不会增加我的i值吗 int i = 0; list.get(7 + (i = i++)); list.get(7 + (i = i++)); 它保留i=0而不是增量1,至少在第二次调用中是1。i=i++首先赋值,然后再增量 以下是执行的基本情况: list.get(7 + (i = i)); //list.get(7); i = i + 1; //i = 1 list.get(7 + (i = i); //list.get(8); i = i + 1; //i =

有人能解释一下为什么这样的调用不会增加我的
i
值吗

int i = 0;
list.get(7 + (i = i++));
list.get(7 + (i = i++));

它保留
i=0
而不是增量1,至少在第二次调用中是1。

i=i++
首先赋值,然后再增量

以下是执行的基本情况:

list.get(7 + (i = i)); //list.get(7);
i = i + 1; //i = 1
list.get(7 + (i = i); //list.get(8);
i = i + 1; //i = 2

++i
将首先递增变量,然后分配第二个

i=i++
类似于:

int old_i = i; 
i = i + 1;
i = old_i; 
实际发生的情况是,
i++
的值是
i
在增量发生之前的值,然后
i
将得到<代码>i


在一行中,
i++
将使用
i
的旧值,然后将其递增。

i=i++
意味着
i
将被分配
i
的旧值,然后递增1。如果你想真正增加你的价值,你应该写下:

int i = 0;
list.get(7 + (i++));
list.get(7 + (i++));
或:


i=i++
没有任何意义,因为
i++
确实编辑
i
value您实际想要写的是
list.get(7+i++)
“++i将首先递增变量,然后赋值”所以为什么对于i=(++i)编译器会给我一个警告:“赋值给变量i没有效果”?因为它没有效果。这是一种冗余,因为在后缀递增(++i)期间,我被分配递增的值。您只需要list.get(7+(+++i));
int i = 0;
list.get(7 + (i+1));
list.get(7 + (i+2));