#C语言学习感悟#关于++a和a++

话不多说,直接看一个程序:

int a=5,b=6;
printf("%d\n",((++a==b--)?++a:b--));(说明:程序段是为了字迹显示清楚,不是所示对应的代码,下同)

输出的结果是什么呢?请看下图:


这个结果是计算机给的,肯定是按照程序执行的。要能弄懂上面的程序里表达式的结果,必须要理解++a和a++这两种形式的区别。

情况一:++a 意味着先计算a=a+1,然后再取a的值。
情况二:a++ 意味着先取a的值,再运算a=a+1。

上面的程序中,++a的a值是6(要先算a=a+1),而b--的b值是6(因为先取值,再计算b=b-1),判断条件成立,所以取后面++a的值,因为要先算a=a+1,再取值,所以此时最后取到的a值为7。

不过要注意的是,以上两种情况也是有成立条件的,如果是遇到了语句结束符号“;”然后再取值的话,则二者是一样的。因为需要把对应行的代码执行完再取值,无论是否先算a=a+1,最后都是算完才进行下一步。

例如:

int a=1;
a++;
printf("%d\n",a);


int a=1;
++a;
printf("%d\n",a);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值