i++,与++i是我们经常用到的两个自增运算符,但是我们大多数人只了解i++先赋值后自增,++i先自增再赋值,但是究竟怎么赋值,到底什么时候先增却让我们这些小白们理不清,接下来先看一段代码:
int main(){
int i=0,j=0,k=0;
i++;
++j;
printf("i = %d j = %d k=%d \n",i ,j,k++ );
return 0;
}
输出:i = 1 j = 1 k=0
从输出结果我们可以看出,j 和 i 各自增加1 k++没有变化
int main(){
int i=0,j=0,a=0,b=0;
a=i++;
b=++j;
printf("a=%d b=%d \n",a,b);
printf("i=%d ",i);
return 0;
}
输出:a=0 b=1
i=1
从输出结果我们可以看出,i++整体使用赋值给a,a=0不变,++j整体使用赋值给b,b增加1,i 单独使用值为1,
参照上面两段代码的输出结果,我们可以得出结论:
当i++,或++i,出现时如果整体使用i++,则i++返回未增加前的值,以后出现i++,则值依次递增1,如果整体使用++i,则值立即加1,以后出现++i,则值依次递增1,如果单独使用i,不管是i++,中的i,还是++i,中的i,此 i 的值立即加1;
大家可能看过这样一段代码:
int main(){
int i=0;
i=i++;
printf("i = %d \n",i);
return 0;
}
输出: i = 0
有人问这里的i为什么又输出0呢?大家学c语言一定要进得去,出的来,既然上面的已经了解到 i++ 整体使用返回的是未增加前的值,那么i++就是0,将0赋值给i,输出结果当然是0.
有人可能觉得上面的问题不是问题 ,很简单,但在学习c的过程中刚开始学习时看它确实就那样,很自然觉得为0,学着学着突然发现 i++不是不先增加吗?怎么用着用着发现 i 增加了,然后想啊想,看到有人说i++, 就是i=i+1,然后记住了,平时用着也没错,突然有一天看到这段代码了,这么简单 i++就是i=i+1啊,自然认为应该输出1,看着输出结果后…??为什么是0?虽然这个问题很简单到不想花时间思考,但总感觉智商被侮辱了,不爽…希望今天看到这篇文章后能解决你的一点点疑惑哦!