首先,根据定义:
i++表示先调用i的值,再对i加1。
++i表示先对i加1,再调用i+1的值。
但是尽管对i++和++i的定义很熟悉了,但是有时候看到一些代码使用不严谨却也能正常运行,就很好奇这是为什么。
就设计了一些常见的场景来探究。
第一种场景是使用for循环的时候,这可能是最常见的++
使用情况了。
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) {
printf("%d", i);
}
}
结果如下:
类型 | 输出 |
---|---|
i++ | 0123456789 |
++i | 0123456789 |
结果没啥区别,是一样的。
第二种情况是在for循环的主体部分来进行++
。
#include <stdio.h>
int main() {
int i, x;
for (i=0,x=0; i<10; i++) {
printf("%d", x++);
}
}
结果如下:
类型 | 输出 |
---|---|
i++ | 0123456789 |
++i | 12345678910 |
这时候我们发现输出的结果不一样了,但是这里我们先不出结论。
接下来我们来看第三种场景:while循环中,对一个值进行每步加一的赋值并且将其输出。
#include <stdio.h>
int main() {
int x;
int i=0;
while (i<10) {
x=i++;
printf("%d", x);
}
}
结果如下:
类型 | 输出 |
---|---|
i++ | 0123456789 |
++i | 12345678910 |
再来看第四种情况:while循环中,直接将i每步加一并且输出。
#include <stdio.h>
int main() {
int i=0;
while (i<10) {
printf("%d", i++);
}
}
结果如下:
类型 | 输出 |
---|---|
i++ | 0123456789 |
++i | 12345678910 |
这里结果和上述一样。
好了经过研究上述四种情况,就可以下结论:所以如果在while中或者for的主体部分使用++
,必须按照其定义来。但是如果在for的判断部分使用,就没有区别。