李芙蓉
摘 要:自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
關(guān)鍵詞:C語言;自增(自減)運(yùn)算符;表達(dá)式
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B 文章編號:1002-7661(2014)21-009-01
C語言功能強(qiáng)大,使用靈活,是初學(xué)者的很好的入門語言。而自增(自減)是C語言中比較有特色的運(yùn)算符,在編程中合理使用可以節(jié)省代碼,提高效率;但是如果使用不當(dāng),則極易造成錯誤。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
一、自增(自減)運(yùn)算符的含義及使用形式
1、自增自減運(yùn)算符的含義
C語言的自增和自減運(yùn)算符分別是:++,--。作用是使變量的值加1或減1,它們能操作的對象只能是變量,常量不能進(jìn)行自增(自減)運(yùn)算。如7++相當(dāng)于7=7+1,和賦值表達(dá)式的要求不相符。特別要注意的是在C語言中,數(shù)組名和函數(shù)名都屬于常量,因此不能進(jìn)行自增(自減)運(yùn)算。表達(dá)式也不能進(jìn)行自增(自減)運(yùn)算。如(a+b)--,等價于a+b=a+b-1,不符合賦值表達(dá)式的要求。自增(自減)運(yùn)算符具有對運(yùn)算量重新賦值的功能,故不能對無存儲空間的對象進(jìn)行重新賦值。
2、自增(自減)運(yùn)算符的使用形式
自增(自減)運(yùn)算符作用于變量之前稱為前綴運(yùn)算(++i或--i),運(yùn)算符作用于變量之后稱為后綴運(yùn)算(i++或i--)。前綴運(yùn)算規(guī)則為:“先變后用”,即,加(減)號在前,先加(減)后用;運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。后綴運(yùn)算規(guī)則為:“先用后變”,即,加(減)號在后,先用后加(減);運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。
二、自增(自減)運(yùn)算符的靈活運(yùn)用
“++、--”運(yùn)算符在 C 語言程序中的運(yùn)用非常廣,也非常靈活,現(xiàn)通過例子說明。
1、自增(自減)運(yùn)算符在表達(dá)式中的應(yīng)用
例 #include
void main()
{int i=3,j=3,p,q;
p=++i;①
q=j++;②
printf("%d,%d,%d,%d\n",p,q,i,j);}
運(yùn)行程序,輸出結(jié)果為:4,3,4,4
分析:①是前綴,“先變后用”。即先執(zhí)行i=i+1,在執(zhí)行p=i。因此i和p的值都是4。②是后綴,“先用后變”。即先執(zhí)行q=j,在執(zhí)行j=j+1。因此q的值為3,j的值為4。
2、自增(自減)運(yùn)算符的混合應(yīng)用
設(shè)i的初值為4,求表達(dá)式p=(i++)+(i++)+(i++);自增運(yùn)算作為后綴式,其運(yùn)算優(yōu)先級低于求和運(yùn)算。相當(dāng)于先執(zhí)行p=i+i+i,在執(zhí)行i++,i++,i++。因此p的值為12,i的值為7。
而表達(dá)式p=(++i)+(++i)+(++i);自增運(yùn)算作為前綴式,其運(yùn)算優(yōu)先級高于求和運(yùn)算。故先按照“自右至左”的結(jié)合性進(jìn)行兩次自增運(yùn)算即++i,++i,i的值變?yōu)?,獲得滿足第一個求和運(yùn)算符兩側(cè)的操作數(shù)要求進(jìn)行6+6求和運(yùn)算,然后將和值(12)與變量i的第三次自增值(i=7)進(jìn)行第二次求和運(yùn)算(12+7)即p=((++i)+(++i))+(++i)=(6+6)+7=19,最后i的值為7。
關(guān)于自增(自減)運(yùn)算符的在混合應(yīng)用中的規(guī)則我們可以理解為,若作前綴形式,其運(yùn)算優(yōu)先級高于其它算術(shù)運(yùn)算,即先按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算,再進(jìn)行其它運(yùn)算;若為后綴形式,其運(yùn)算優(yōu)先級低于其它算術(shù)運(yùn)算,即先進(jìn)行其它算術(shù)運(yùn)算,再按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算。
3、自增(自減)運(yùn)算符在函數(shù)調(diào)用中的應(yīng)用
在調(diào)用函數(shù)時,對函數(shù)參數(shù)的求值順序是自右至左。
例如:i=4; printf("%d,%d",++i,++i);
上面printf函數(shù)中遵循從右至左的求值順序,先求出第2個表達(dá)式 ++i 的值 5,然后求第1個表達(dá)式++i的值6,最后再從左到右輸出每個表達(dá)式++i的值:6,5。
i=4; printf("%d,%d",i++,i++);
上面輸出函數(shù)執(zhí)行順序仍為從右向左,第2個表達(dá)式i++的值為4,此時變量i并沒有立即自增,,所以第1個表達(dá)式i++的值仍為4。最后再從左到右輸出每個表達(dá)式i++的值:4,4。當(dāng)輸出函數(shù)執(zhí)行完成之后,變量i執(zhí)行i++操作,一共執(zhí)行了2次,i的值為6。
4、自增(自減)運(yùn)算符在循環(huán)結(jié)構(gòu)中的應(yīng)用
在循環(huán)語句while,do while和for中都有類似“i++;”或“i--;”這樣由變量和自增自減運(yùn)算符構(gòu)成的賦值語句充當(dāng)使循環(huán)趨于結(jié)束的語句,目的是為了避免程序出現(xiàn)死循環(huán)。
例#include
Void main()
{int s=0,i;
for(i=1;i<=20;i++)
s=s+i;
printf("%d\n",s); }
分析:當(dāng)循環(huán)變量i=21時,條件不成立,循環(huán)結(jié)束。
在循環(huán)表達(dá)式中出現(xiàn)的自增自減運(yùn)算符可看做獨(dú)立的語句,++i 和i++最終都使得循環(huán)變量i的值自增,所以沒有分別,等價于i=i+1。
三、結(jié)束語
自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到,但對于初學(xué)者而言,往往感到難以理解這兩個運(yùn)算符的運(yùn)算實(shí)質(zhì),因此使用自增自減運(yùn)算符時要特別小心,仔細(xì)考慮,否則會得到莫名其妙的結(jié)果,對于初學(xué)者在學(xué)習(xí)中應(yīng)該多分析,同時也應(yīng)多上機(jī)練習(xí)。希望通過對此所作的探討,能夠使初學(xué)者正確理解自增、自減運(yùn)算符的作用和意義。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計[M].3版.北京:清華大學(xué)出版社,2005.
[2] 梁海英.C語言程序設(shè)計.清華大學(xué)出版社.2013
[3] 朱承學(xué).C語言程序設(shè)計教程 [M].中國水利水電出版社.2004.
摘 要:自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
關(guān)鍵詞:C語言;自增(自減)運(yùn)算符;表達(dá)式
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B 文章編號:1002-7661(2014)21-009-01
C語言功能強(qiáng)大,使用靈活,是初學(xué)者的很好的入門語言。而自增(自減)是C語言中比較有特色的運(yùn)算符,在編程中合理使用可以節(jié)省代碼,提高效率;但是如果使用不當(dāng),則極易造成錯誤。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
一、自增(自減)運(yùn)算符的含義及使用形式
1、自增自減運(yùn)算符的含義
C語言的自增和自減運(yùn)算符分別是:++,--。作用是使變量的值加1或減1,它們能操作的對象只能是變量,常量不能進(jìn)行自增(自減)運(yùn)算。如7++相當(dāng)于7=7+1,和賦值表達(dá)式的要求不相符。特別要注意的是在C語言中,數(shù)組名和函數(shù)名都屬于常量,因此不能進(jìn)行自增(自減)運(yùn)算。表達(dá)式也不能進(jìn)行自增(自減)運(yùn)算。如(a+b)--,等價于a+b=a+b-1,不符合賦值表達(dá)式的要求。自增(自減)運(yùn)算符具有對運(yùn)算量重新賦值的功能,故不能對無存儲空間的對象進(jìn)行重新賦值。
2、自增(自減)運(yùn)算符的使用形式
自增(自減)運(yùn)算符作用于變量之前稱為前綴運(yùn)算(++i或--i),運(yùn)算符作用于變量之后稱為后綴運(yùn)算(i++或i--)。前綴運(yùn)算規(guī)則為:“先變后用”,即,加(減)號在前,先加(減)后用;運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。后綴運(yùn)算規(guī)則為:“先用后變”,即,加(減)號在后,先用后加(減);運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。
二、自增(自減)運(yùn)算符的靈活運(yùn)用
“++、--”運(yùn)算符在 C 語言程序中的運(yùn)用非常廣,也非常靈活,現(xiàn)通過例子說明。
1、自增(自減)運(yùn)算符在表達(dá)式中的應(yīng)用
例 #include
void main()
{int i=3,j=3,p,q;
p=++i;①
q=j++;②
printf("%d,%d,%d,%d\n",p,q,i,j);}
運(yùn)行程序,輸出結(jié)果為:4,3,4,4
分析:①是前綴,“先變后用”。即先執(zhí)行i=i+1,在執(zhí)行p=i。因此i和p的值都是4。②是后綴,“先用后變”。即先執(zhí)行q=j,在執(zhí)行j=j+1。因此q的值為3,j的值為4。
2、自增(自減)運(yùn)算符的混合應(yīng)用
設(shè)i的初值為4,求表達(dá)式p=(i++)+(i++)+(i++);自增運(yùn)算作為后綴式,其運(yùn)算優(yōu)先級低于求和運(yùn)算。相當(dāng)于先執(zhí)行p=i+i+i,在執(zhí)行i++,i++,i++。因此p的值為12,i的值為7。
而表達(dá)式p=(++i)+(++i)+(++i);自增運(yùn)算作為前綴式,其運(yùn)算優(yōu)先級高于求和運(yùn)算。故先按照“自右至左”的結(jié)合性進(jìn)行兩次自增運(yùn)算即++i,++i,i的值變?yōu)?,獲得滿足第一個求和運(yùn)算符兩側(cè)的操作數(shù)要求進(jìn)行6+6求和運(yùn)算,然后將和值(12)與變量i的第三次自增值(i=7)進(jìn)行第二次求和運(yùn)算(12+7)即p=((++i)+(++i))+(++i)=(6+6)+7=19,最后i的值為7。
關(guān)于自增(自減)運(yùn)算符的在混合應(yīng)用中的規(guī)則我們可以理解為,若作前綴形式,其運(yùn)算優(yōu)先級高于其它算術(shù)運(yùn)算,即先按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算,再進(jìn)行其它運(yùn)算;若為后綴形式,其運(yùn)算優(yōu)先級低于其它算術(shù)運(yùn)算,即先進(jìn)行其它算術(shù)運(yùn)算,再按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算。
3、自增(自減)運(yùn)算符在函數(shù)調(diào)用中的應(yīng)用
在調(diào)用函數(shù)時,對函數(shù)參數(shù)的求值順序是自右至左。
例如:i=4; printf("%d,%d",++i,++i);
上面printf函數(shù)中遵循從右至左的求值順序,先求出第2個表達(dá)式 ++i 的值 5,然后求第1個表達(dá)式++i的值6,最后再從左到右輸出每個表達(dá)式++i的值:6,5。
i=4; printf("%d,%d",i++,i++);
上面輸出函數(shù)執(zhí)行順序仍為從右向左,第2個表達(dá)式i++的值為4,此時變量i并沒有立即自增,,所以第1個表達(dá)式i++的值仍為4。最后再從左到右輸出每個表達(dá)式i++的值:4,4。當(dāng)輸出函數(shù)執(zhí)行完成之后,變量i執(zhí)行i++操作,一共執(zhí)行了2次,i的值為6。
4、自增(自減)運(yùn)算符在循環(huán)結(jié)構(gòu)中的應(yīng)用
在循環(huán)語句while,do while和for中都有類似“i++;”或“i--;”這樣由變量和自增自減運(yùn)算符構(gòu)成的賦值語句充當(dāng)使循環(huán)趨于結(jié)束的語句,目的是為了避免程序出現(xiàn)死循環(huán)。
例#include
Void main()
{int s=0,i;
for(i=1;i<=20;i++)
s=s+i;
printf("%d\n",s); }
分析:當(dāng)循環(huán)變量i=21時,條件不成立,循環(huán)結(jié)束。
在循環(huán)表達(dá)式中出現(xiàn)的自增自減運(yùn)算符可看做獨(dú)立的語句,++i 和i++最終都使得循環(huán)變量i的值自增,所以沒有分別,等價于i=i+1。
三、結(jié)束語
自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到,但對于初學(xué)者而言,往往感到難以理解這兩個運(yùn)算符的運(yùn)算實(shí)質(zhì),因此使用自增自減運(yùn)算符時要特別小心,仔細(xì)考慮,否則會得到莫名其妙的結(jié)果,對于初學(xué)者在學(xué)習(xí)中應(yīng)該多分析,同時也應(yīng)多上機(jī)練習(xí)。希望通過對此所作的探討,能夠使初學(xué)者正確理解自增、自減運(yùn)算符的作用和意義。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計[M].3版.北京:清華大學(xué)出版社,2005.
[2] 梁海英.C語言程序設(shè)計.清華大學(xué)出版社.2013
[3] 朱承學(xué).C語言程序設(shè)計教程 [M].中國水利水電出版社.2004.
摘 要:自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
關(guān)鍵詞:C語言;自增(自減)運(yùn)算符;表達(dá)式
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B 文章編號:1002-7661(2014)21-009-01
C語言功能強(qiáng)大,使用靈活,是初學(xué)者的很好的入門語言。而自增(自減)是C語言中比較有特色的運(yùn)算符,在編程中合理使用可以節(jié)省代碼,提高效率;但是如果使用不當(dāng),則極易造成錯誤。本文根據(jù)自增(自減)運(yùn)算符的特點(diǎn), 淺談自增(自減)運(yùn)算符在VC++6.0編譯器的應(yīng)用,以期為初學(xué)者學(xué)習(xí)和使用自增(自減)運(yùn)算符提供一些幫助。
一、自增(自減)運(yùn)算符的含義及使用形式
1、自增自減運(yùn)算符的含義
C語言的自增和自減運(yùn)算符分別是:++,--。作用是使變量的值加1或減1,它們能操作的對象只能是變量,常量不能進(jìn)行自增(自減)運(yùn)算。如7++相當(dāng)于7=7+1,和賦值表達(dá)式的要求不相符。特別要注意的是在C語言中,數(shù)組名和函數(shù)名都屬于常量,因此不能進(jìn)行自增(自減)運(yùn)算。表達(dá)式也不能進(jìn)行自增(自減)運(yùn)算。如(a+b)--,等價于a+b=a+b-1,不符合賦值表達(dá)式的要求。自增(自減)運(yùn)算符具有對運(yùn)算量重新賦值的功能,故不能對無存儲空間的對象進(jìn)行重新賦值。
2、自增(自減)運(yùn)算符的使用形式
自增(自減)運(yùn)算符作用于變量之前稱為前綴運(yùn)算(++i或--i),運(yùn)算符作用于變量之后稱為后綴運(yùn)算(i++或i--)。前綴運(yùn)算規(guī)則為:“先變后用”,即,加(減)號在前,先加(減)后用;運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。后綴運(yùn)算規(guī)則為:“先用后變”,即,加(減)號在后,先用后加(減);運(yùn)算結(jié)果:變量的值相應(yīng)增加1(減少1)。
二、自增(自減)運(yùn)算符的靈活運(yùn)用
“++、--”運(yùn)算符在 C 語言程序中的運(yùn)用非常廣,也非常靈活,現(xiàn)通過例子說明。
1、自增(自減)運(yùn)算符在表達(dá)式中的應(yīng)用
例 #include
void main()
{int i=3,j=3,p,q;
p=++i;①
q=j++;②
printf("%d,%d,%d,%d\n",p,q,i,j);}
運(yùn)行程序,輸出結(jié)果為:4,3,4,4
分析:①是前綴,“先變后用”。即先執(zhí)行i=i+1,在執(zhí)行p=i。因此i和p的值都是4。②是后綴,“先用后變”。即先執(zhí)行q=j,在執(zhí)行j=j+1。因此q的值為3,j的值為4。
2、自增(自減)運(yùn)算符的混合應(yīng)用
設(shè)i的初值為4,求表達(dá)式p=(i++)+(i++)+(i++);自增運(yùn)算作為后綴式,其運(yùn)算優(yōu)先級低于求和運(yùn)算。相當(dāng)于先執(zhí)行p=i+i+i,在執(zhí)行i++,i++,i++。因此p的值為12,i的值為7。
而表達(dá)式p=(++i)+(++i)+(++i);自增運(yùn)算作為前綴式,其運(yùn)算優(yōu)先級高于求和運(yùn)算。故先按照“自右至左”的結(jié)合性進(jìn)行兩次自增運(yùn)算即++i,++i,i的值變?yōu)?,獲得滿足第一個求和運(yùn)算符兩側(cè)的操作數(shù)要求進(jìn)行6+6求和運(yùn)算,然后將和值(12)與變量i的第三次自增值(i=7)進(jìn)行第二次求和運(yùn)算(12+7)即p=((++i)+(++i))+(++i)=(6+6)+7=19,最后i的值為7。
關(guān)于自增(自減)運(yùn)算符的在混合應(yīng)用中的規(guī)則我們可以理解為,若作前綴形式,其運(yùn)算優(yōu)先級高于其它算術(shù)運(yùn)算,即先按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算,再進(jìn)行其它運(yùn)算;若為后綴形式,其運(yùn)算優(yōu)先級低于其它算術(shù)運(yùn)算,即先進(jìn)行其它算術(shù)運(yùn)算,再按照“從右至左”的結(jié)合性進(jìn)行自增(自減)運(yùn)算。
3、自增(自減)運(yùn)算符在函數(shù)調(diào)用中的應(yīng)用
在調(diào)用函數(shù)時,對函數(shù)參數(shù)的求值順序是自右至左。
例如:i=4; printf("%d,%d",++i,++i);
上面printf函數(shù)中遵循從右至左的求值順序,先求出第2個表達(dá)式 ++i 的值 5,然后求第1個表達(dá)式++i的值6,最后再從左到右輸出每個表達(dá)式++i的值:6,5。
i=4; printf("%d,%d",i++,i++);
上面輸出函數(shù)執(zhí)行順序仍為從右向左,第2個表達(dá)式i++的值為4,此時變量i并沒有立即自增,,所以第1個表達(dá)式i++的值仍為4。最后再從左到右輸出每個表達(dá)式i++的值:4,4。當(dāng)輸出函數(shù)執(zhí)行完成之后,變量i執(zhí)行i++操作,一共執(zhí)行了2次,i的值為6。
4、自增(自減)運(yùn)算符在循環(huán)結(jié)構(gòu)中的應(yīng)用
在循環(huán)語句while,do while和for中都有類似“i++;”或“i--;”這樣由變量和自增自減運(yùn)算符構(gòu)成的賦值語句充當(dāng)使循環(huán)趨于結(jié)束的語句,目的是為了避免程序出現(xiàn)死循環(huán)。
例#include
Void main()
{int s=0,i;
for(i=1;i<=20;i++)
s=s+i;
printf("%d\n",s); }
分析:當(dāng)循環(huán)變量i=21時,條件不成立,循環(huán)結(jié)束。
在循環(huán)表達(dá)式中出現(xiàn)的自增自減運(yùn)算符可看做獨(dú)立的語句,++i 和i++最終都使得循環(huán)變量i的值自增,所以沒有分別,等價于i=i+1。
三、結(jié)束語
自增、自減運(yùn)算符是 C 程序設(shè)計語言中特有的,在編程過程中經(jīng)常用到,但對于初學(xué)者而言,往往感到難以理解這兩個運(yùn)算符的運(yùn)算實(shí)質(zhì),因此使用自增自減運(yùn)算符時要特別小心,仔細(xì)考慮,否則會得到莫名其妙的結(jié)果,對于初學(xué)者在學(xué)習(xí)中應(yīng)該多分析,同時也應(yīng)多上機(jī)練習(xí)。希望通過對此所作的探討,能夠使初學(xué)者正確理解自增、自減運(yùn)算符的作用和意義。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計[M].3版.北京:清華大學(xué)出版社,2005.
[2] 梁海英.C語言程序設(shè)計.清華大學(xué)出版社.2013
[3] 朱承學(xué).C語言程序設(shè)計教程 [M].中國水利水電出版社.2004.