在C语言中,`i++` 和 `++i` 是两种不同的自增运算符。
`i++` 是后缀自增运算符,它首先返回 `i` 的值,然后再将 `i` 的值加1。
`++i` 是前缀自增运算符,它首先将 `i` 的值加1,然后再返回新的值。
#include<stdio.h>
void main()
{
int i = 1;
int k1 = i++; // k1 被赋予 i 的当前值(1),然后 i 自增为 2
printf("%d\n",k1); // 输出 k1 的值,即 1
printf("%d\n",i); // 输出 i 的值,即 2
printf("%d\n",i++); // 输出 i 的值,即 2,然后 i 自增为 3
int k2 = ++i; // k2等于4
printf("%d\n",k2);
i=10;
printf("一%d\n",k1);//k1等于1
printf("%d\n",i); //i等于10
}
printf("一%d\n",k1);的值为什么是1不是10?
在代码中:
int k1 = i++; // k1 被赋予 i 的当前值(1),然后 i 自增为 2
printf("%d\n",k1); // 输出 k1 的值,即 1
printf("%d\n",i); // 输出 i 的值,即 2
这里 `k1` 被赋予了 `i` 的当前值,即 1。之后 `i` 自增为 2,但 `k1` 的值不会改变,因此 `printf("%d\n",k1);` 仍然输出 1。
至于 `printf("一%d\n",k1);`的值为什么是1不是10?,因为 `k1` 的值在之前被初始化为 1,并且没有被改变,所以这里输出的值也是 1。`i` 的值被设置为 10 与 `k1` 的值无关,`k1` 仍然是之前赋值时的那个值(1),直到你改变 `k1` 的值或者它被重新赋值。