i++和++i的区别
i++
,先执行其他操作,再i自加;i--
,先执行其他操作,再i自减;++i
,先i自加,再执行其他操作;--i
,先i自减,再执行其他操作;
在循环中不体现差异。
测试代码:
#include <stdio.h>
int main() {
//直接计算++i和i++并无区别
int num = 0;
printf("num++ = %d,num = %d \n", num++, num); //这种情况num++ = 0,num =1;
num = 0;
num++;
printf("after num++, num= %d\n", num); //这种情况num++ = 0;
num = 0;
++num;
printf("after ++num, num = %d\n", num);
int i = 0, j = 0, k = 4, m = 4;
int a[] = {0, 0, 0, 0, 0};
a[i++] = 15;
// a[0] = 15, i = 1
// a[i] = 15; i++;
printf("a[%d] = %d\t", i, a[i]);
printf("a[%d] = %d\n", i - 1, a[i - 1]);
int b[] = {0, 0, 0, 0, 0};
b[++j] = 10;
// b[1] = 10, j = 1
// j++; b[j] = 10;
printf("b[%d] = %d\t", i, b[i]);
printf("b[%d] = %d\n", i - 1, b[i - 1]);
int c[] = {0, 0, 0, 0, 0};
c[k--] = 10;
// c[4] = 10, k = 3
// c[k] = 10, k--;
printf("c[%d] = %d\t", k, c[k]);
printf("c[%d] = %d\n", k + 1, c[k + 1]);
int d[] = {0, 0, 0, 0, 0};
d[--m] = 15;
// d[3] = 15, m = 3
// m--; d[m] = 15
printf("d[%d] = %d\t", m, d[m]);
printf("d[%d] = %d\n", m + 1, d[m + 1]);
//对于for循环:写法上没有区别
for (int i = 0; i < 5; i++) {
printf("循环计数i = %d\n", i);
}
for (int i = 0; i < 5; ++i) {
printf("循环计数i = %d\n", i);
}
//赋值
int q = 0, p = 5;
q = p++;
// q = 5, p = 6;
printf("q = %d\tp = %d\n", q, p);
q = 0;
p = 5;
q = ++p;
// q = 6, p = 6;
printf("q = %d\tp = %d\n", q, p);
return 0;
}