C语言大世界————03剑荡++

首先明确a++,和++a的区别:

a++:表达式执行完后进行++运算;

++a:先进行++运算在执行表达式;

这是最本质的区别,不用担心,接下来的例子我会详细介绍,博文特点,以代码为主,废话为辅。

我们常见的 b = a++; b = ++a,下面给出代码 是在C-FREE5.0环境下编写的例子代码:

/*
测试++运算符 
*/

#include "stdio.h"


int main()
{
	int a,b;
	a = 0;
	b = 1;
	
	/*测试a++类型 */
	/*
		既然a++必须在完成表达式后才能进行自增 那么
		下面例子就是先对a赋值 因此a = b = 1 然后b自增(++)b=2
		很好理解对不对 
	*/
	a = (b++) ;
	printf("例1-1:a = %d  b = %d\n",a,b);
	
	/*
		同样道理 a++必须在完成表达式之后才能自增
		那么我们将先进行表达式 也就是a赋值操作 而两个b++都必须
		在完成表达式后进行,因此 a = 1+1; 然后b进行2次自增 也就是++操作
		b=3 
	*/
	b = 1 ; 
	a = (b++) + (b++) ; 
	printf("例1-2:a = %d  b = %d\n",a,b);
	
	/*
		这样和上面一样 先进行表达式 赋值操作 a =1+1+1 然后进行3次自增操作
		b=4  很好理解是不是?  强调下 关键就是 先完成表达式 后进行自增!
		注意:不是所有的编译器都这样。 
	*/
	b = 1 ;
	a = (b++) + (b++) + (b++) ;
	printf("例1-3:a = %d  b = %d\n",a,b);
	
	/*测试++a*/
	/*
		这里则是++a操作  先进行自增 后完成表达式
		那么++b 操作之后 b=2  然后赋值 a = b = 2 
	*/
	b = 1 ;
	a = (++b) ; 
	printf("例2-1:a = %d  b = %d\n",a,b);
	
	/*
		这里也是一样 先进行++b操作 后完成表达式 强调下 
		是完成2个++b操作后 才进行赋值 因此两次++b操作后
		b=3  将替换掉两个(++b)  因此 a= 3+3=6
		这里需要你在细细品味下 好茶得慢慢品不是吗 
		看懂了 别急着觉得全明白了 很抱歉告诉你 不是的! 
	*/ 
	b = 1 ; 
	a = (++b) + (++b) ;
	printf("例2-2:a = %d  b = %d\n",a,b);
	/*
		按照前面所说 这里应该先进行3次++b ,b=4 然后替换掉
		所有的++b 因此 a= 4+4+4 =12 。但是输出结果却是10.
		当初我也迷糊了,后来想了下 应该是这样的,先进行前面两个
		++b操作 b=3替换掉前面两个++b 因此 a=3+3+(++b) 这时候b=3
		还有一个++b操作要进行 那么b=4 替换掉(++b) a=3+3+4 =10 
		好了 在细细思考下 到这里就全一样了 
	*/
	b = 1 ;
	a = (++b) + (++b) + (++b) ;
	printf("例2-3:a = %d  b = %d\n",a,b);
	/*
		总结下 在c-free5.0中 前面两个++b操作是要完成后才能两个一起替代++b
		之后还有++b 则是来一个替换一个 而非进行全部++b操作之后 一起替代
		a = 3+3+4+5=15 
	*/
	b = 1 ;
	a = (++b) + (++b) + (++b) + (++b);
	printf("例2-3:a = %d  b = %d\n",a,b);	
} 


结果:



Hey man :别急着下结论  在不同的编译器都不一样哦 例如下面


MAC OSX xcode6.1 playground


xcode 里 可是来一个++就替换掉一个。。。。自己感悟下。不懂请留言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值