这些之间没有区别:
i++;
++i;
但是当他们这样使用时:
anArray[ i++ ] = 0;
anArray[ ++i ] = 0;
有区别吗?
待编辑: 感谢
答案 0 :(得分:3)
非常。
i++ -> use i first and then increment it's value
++i -> increment i first and then use i's new value
答案 1 :(得分:2)
i++ uses the value and then increments it.
++i increments the value and then uses it.
答案 2 :(得分:2)
假设i=3
。
anArray[ i++ ] = 0;
将数组索引3处的元素设置为0。
anArray[ ++i ] = 0;
将数组索引4处的元素设置为0。
答案 3 :(得分:1)
所有关于操作的顺序:
E.g。
int i = 1;
int a = i++;
相当于:
int i = 1;
int a = i;
i++;
相反的是:
int i = 1;
i++;
int a = i;
请注意,这些语句在C ++中是未定义的。
int i = 0;
i = i++;
答案 4 :(得分:0)
是的!差别很大!
在 i++
递增i
表达式被评估。 ++i
之前会增加它。例如:
int i = 2;
printf("%i\n", i++); //prints "2"
printf("%i\n", i); //prints "3"
与:比较:
int i = 2;
printf("%i\n", ++i); //prints "3"
printf("%i\n", i); //prints "3"
我听说++i
的速度要快得多。 Here就更多了。
希望这有帮助!
更新2:已杀死上次更新,因为代码在技术上具有未定义的行为。这个故事的道德:不要使用foo(i, ++i)
,foo(++i, ++i)
,foo(i++, i)
等,甚至array[i] = ++i
。 You don't know what order the expressions get evaluated in!
答案 5 :(得分:0)
如果您将它们用作语句,则输出没有区别。但如果你用它们作为表达,那么就会有一个微妙的区别。
如果anArray[ i++ ] = 0;
i
在分配完成后递增。而在anArray[ ++i ] = 0;
i
的情况下,在分配完成之前递增。
例如i = 0
,anArray[ i++ ] = 0;
将anArray[ 0 ]
设为0
,i
将增加为1
。但是,如果您使用anArray[ ++i ] = 0;
,则anArray[ 1 ]
设置为0
,因为i
已经增加。