标签:style sp 问题 bs as line nbsp ht c语言
网上很多朋友老是搞不懂a++和++a的区别,老是弄错,对于初学者也很纠结,,那是因为没有总结,,总因为这样就是累加,但是却忽略了它的规律。
下面我就总结一下这两者之间的规律,因为自减a——和——a跟自增的道理一样,这里只介绍自增
首先大家要记住一句口诀:
“++a,加号在前,先加后用;
a++,a在前,先用后加”
口诀记住了,不代表就什么都懂了,第二步,我们来举个例子让大家彻底理解这两句话的意思
例如:(此处涉及一些结合性,这里不再多说)
void test1(){
int a=1;
int b=a++;
printf("a=%d,b=%d",a,b);--->a=2,b=1
//分析:执行a++这句时 a++因为a在前,“先用后加”,“先用”-->故表达式(a++)=1,(先把a的值用了,即表达式a++的值为1),“后加”-->a加1后,a变为2.--打印a==2
后再把a++赋值给b,即 打印b=1;
}
void test2(){
int a=1;
int c=++a;
printf("a=%d,c=%d\n",a,c);--->a=2,c=2;
//分析:执行++a这句时 ++a因为+在前,“先加后用”,“先加”-->a加1后,a变为2.“后用”-->故表达式(++a)=2,(先把a的值+1了,即表达式a++的值为2),--打印a==2
后再把(++a)赋值给b,即 打印b=2;
}
这上面是分开的写的,那么我们来一个两个在一起的练习
void test3(){
int a=1,d;
d=a+++++a+++a+a++;
printf("%d,%d",a,d);-->a=4,d=7
//分析:根据结合性:(++)>(+),我们把这个表达式分一下,为:d=(a++)+(++a)+(++a)+(a++)
根据以前的口诀,还有就是变后得值,后面就得用变后的值了,我们往后分析一下
(a=1) a++ ++a ++a a++
表达式 1 3 4 4 --->这里每次都是利用上次的a值配合口诀得到的
a的值 2 3 4 5 -->记住,不管a遇到++a还是++a,经过一个就是+1.一直累加
打印 a=5
打印d=(a++)+(++a)+(++a)+(a++)
= 1 + 3 + 4 + 4
= 12
}
标签:style sp 问题 bs as line nbsp ht c语言
原文地址:http://www.cnblogs.com/wxios/p/4170257.html