C语言入门——突破自增,自减运算(逐行逐句分析)
相信你看完,会有收获的!
一个整数类型的变量自身加 1 可以这样写:
①:a = a + 1;
②:a += 1;
当然,C语言还支持有另外一种更加简洁的写法,就是:a++; or ++a;
这种写法我们称之为:自增(自加)。
与之对应的,也有a–和--a,即自减,其表示自身减 1。
自增运算符与自减运算符:
自增运算符:++
自减运算符: –
在简单了解后,我们从主函数开始逐行逐句分析一下:
首先,以自增运算为例:
#include<stdio.h>
int main()
{
//++ -- 自增,自减 一元运算符
1. int a = 3;
2. int b = a++; //a++ a = a + 1; //执行完这代码后,先给b赋值,再自增
3. printf("%d\n",a);
4. int c = ++a;//++a a = a + 1;//执行完这行代码前,先自增,再给c赋值
5. printf("%d\n",a);
6. printf("%d\n",b);
7. printf("%d\n",c);
8. return 0;
}
在向下阅览之前,可以先自己算一下 这四个输出的值为多少,然后再结合下文所写,加深理解。
空白与"//"注释部分(为了整体的观感与可读性)不再多加分析
注释:关键句已用★标出
按照所标序号开始逐行逐句分析:
1.int a = 3; //定义整型变量a,并将3赋值给a;
2.int b = a++; // b = a++;那赋值后b等于几?3 or 4? 答案是3 ★★★
为什么是3?
可以这样理解,a++,它是先执行b = a;这个语句 再执行一个隐藏语句——a = a + 1;即它先给b赋值然后再自增+1。所以,b的值为3。
本句结束时: a = 4; b = 3;
3.如果printf("%d",a);输出a不进行换行;
如果%d之后加了\n,如:printf("%d\n",a); 输出a的同时需要进行换行操作。
4.int c = ++a; //c=++a; 语句执行赋值后c又等于几呢?4 or 5?答案是5 ★★★
那为什么是5?
这样想一下在第二句的解释,a++,它是先执行b = a;这个语句 再执行一个隐藏语句——a = a + 1;
那么++a,它是先执行隐藏语句a = a + 1;再执行c = a赋值语句,所以a = a + 1; a变成了5,然后再赋值给c;即它先自增然后再赋值给c,因此,c的值为5。
本句结束时: a = 5; b = 3; c = 5;
5.6.7.同3.解释 依次输出a,b,c的同时进行换行操作
输出的值从上向下依次为5,3,5
8.return 0; return语句结束main()函数的执行,把0返还给操作系统。
输出结果如图:
然后,来说一下自减运算,自减运算,与上述自增运算非常相似,无非是增加1换成了减去1,不再多做阐述。此处放上代码,大家可以自己分析一下,然后对比一下计算结果。
#include<stdio.h>
int main()
{
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a--; //a-- a = a - 1; //执行完这代码后,先给b赋值,再自减
printf("%d\n",a);
int c = --a;//--a a = a - 1;//执行完这行代码前,先自减,再给c赋值
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
return 0;
}
输出结果:
希望这篇文章对你有所帮助!
作者:君之(CSDN:Code_流苏 )
如果有误,还请指出!如果有什么不理解的,欢迎评论留言交流!
创作不易,喜欢的话,还请多多点赞与关注!
感谢支持!欢迎评论交流学习!
最后,留一个小问题:
int i = 0;
int j = i++;
int k = --i;
i,j,k分别等于多少呢?(评论区揭晓答案)