关于C语言中的++ 与 --

        推荐我本次用到的两种编译器:

       1.Visual studio(对个人使用免费):https://visualstudio.microsoft.com/downloads/

       2.DEV-C++(也是免费的,收费的别相信):https://sourceforge.net/projects/orwelldevcpp/

       这篇文章文章把变量名都设置为a 

       ++,--这两个符号,也是称为自增自减的运算符可以放在变量名以前或者放在变量名以后

       前置是把++ 或者 -- 放在变量名的前面(可以表示为++a 或 --a);而后置是把++ 或 --放在变量名的后面(可以表现为a++ 或 a--)。

 

前置 与 后置 的性质:

1.前置和后置会对变量中储存的数据进行 加1 或 减1(分别对应++ 或 --),这个是前置和后置的共同特点,但是两者都会对存储数据进行加1 或 减1 时会有两点差异,接下来我会详细介绍差异;

2.第一个差异:

1)前置:使用前置在程序中会先对变量中存储的数据进行加1 或 减1得到改变后的数据(先更新存储数据),然后在进行重新赋值,带入相应式子参与运算......(这里可以简略地概括使用前置为“先变后用”),下面会用代码举个栗子:550b5c95a4724f9bb67a001d48f80b66.jpg

 

​
#include <stdio.h>
int main()
{
    int a=10;
    int sum=++a + ++a; 
    printf("a=%d\n",a);   // \n为换行符
    printf("sum=%d",sum);
    return 0;

}
/*根据第二条原理,有两个++a会优先进行自加1后,自加表示为a=10+1=11,a=11+1=12,然后sum=a + a
sum=12+12=24,那么最后输出sum=24*/
​

 

2)后置:后置和前置不同,使用后置是先把变量中存储的数据进行重新赋值,带入相应式子参与运算......(直到相应式子得到结果),然后对变量中存储的数据进行加1 或 减1得到改变的数据(后更新数据),在这里可以(简略地概括使用后置为4个字“先用后变”),下面会用代码举个栗子:

#include <stdio.h>
main()
{
    int a = 5;
    int result = a++ + a++;
    //在Visual Studio 2022中显示为result=5+5=10(在DEV-c++中result=11)
    printf("a=%d\n",a);
    printf("result=%d",result);
    return 0;
}
/*编译器的不同可能结果不同但是对于后置的使用一定记住先用后变,一次后置就会使存储的原数据加一个1或减一个1*/

  3.第二个差异(当同时使用前置和后置时会有一个点不同,这个是电脑系统不同带来的差异):

  在 windows 系统和 Linus / mac 系统中时对于前置,后置的使用规则是一样的,但是当同时使用前置和后置的时候两类系统就会有所差异了,下面会具体分析到它们的差异:

Windows系统中:

        当前置和后置同时使用时会有前置优先执行(即先进行先变后用),整个式子中会使用执行前置变化后的数据,直到该式子得到结果在执行后置的 自加1 或 自减1

        下面会用代码结合进行解释,举个栗子:e283d753c5fd479f948fa7f14e3aea5a.jpg

 

#include <stdio.h>


int main()
{
    int a = 10,b = 5;
    int result = a++ + ++a - --b - a--;
//根据在Windows系统中的原理前置优先于后置使用,Visual studio 2022中result=11 + 11 - 4 -11 =7
    printf("result=%d\n",result);
    printf("a=%d,b=%d",a,b);
    return 0;

}
/*但是在Windows系统的DEV-C++中result=6,但确实也这个解释,可能编译器不同,结果不同*/

 

Linus/mac系统中:

        混合使用前置和后置时,不存在前置优先执行,它们二者是平等的

        举个栗子:

​
#include <stdio.h>


int main()
{
    int a = 10,b = 5;
    int result = a++ + ++a - --b - a--;
//根据在mac/Linus系统中的原理前置优后置使用,Visual studio 2022中result=10 + 11 - 4 -11 =6
    printf("result=%d\n",result);
    printf("a=%d,b=%d",a,b);
    return 0;

}
/*但是在Windows系统的DEV-C++中result=6,但确实也这个解释,可能编译器不同,结果不同
这时候执行数据先后可能就是依据式子从左到右执行*/

​

感谢朋友们可以耐心地看到这里,以上是我经过查资料加上自己的理解写下滴,要是大家发现有什么不对的欢迎大家在评论区提出来,我看到后一定及时修订,争取完善本篇文章,我真心希望广大的编程学习者有一点用😄

 

还有也很好用的一个编译器(有很多插件,也挺方便的):https://code.visualstudio.com/download

朋友们要是有什么觉得好用的编译器可以分享一下在评论区🌹🌹🌹🌹🌹🌹₍₍ ◟(∗˙ ꒵ ˙∗)◞ ₎₎

eddce16346274aacba96bae6dcabb12b.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值