999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言中的自加自減運算

2013-12-31 00:00:00劉文君
都市家教·上半月 2013年11期

【摘 要】C語言中運算符十分豐富,自加運算和自減運算是c語言的教學中的重點和難點,但我們只要在教學中抓住運算的基本定義,通過經典題型分析和適度深入解析,就不難達到熟練應用之目的。

【關鍵詞】運算的定義;經典題型;深度解析

C語言作為一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特征,編程功能十分強大。C語言定義了豐富的運算,多達40余種,這給c語言的學習帶來了一定的困難。++運算(自加運算)和--運算(自減運算)正是這些運算中極具特點而又非常重要的兩種運算,在教學中,歷來是教學的難點,而關于這方面的系統的講解資料又很難找到,本人在c語言教學中,對++和--運算就教學中碰到的問題,做了一些探索性的研究,現歸納總結,以期與同行共勉。

一、運算的定義

1. ++(自加運算)的定義

++(自加運算)是單目運算,且只能以變量為運算對象,如i++,++a等(i,a為已定義變量),它等效于i=i+1(a=a+1),但是,自加運算又有自己的特點——與其它運算的相關性,雖然對變量i來講,i++與++i沒有什么區別,但當i++和++i還參與其它運算時,i++和++i對整個運算結果的影響是不同的,例如有如下程序段:

int i=1 ,s ;

s=(i++)+1;

printf(“i=%d;s=%d\n”,i,s);

其運行結果是:i=2;s=2

若將程序中s=(i++)+1;換為s=(++i)+1;其它不變,其運行結果就會變為:i=2;s=3 ,此處我們可以看到: i++與++i的不同,并不影響i本身的結果,但卻對s的值產生了不同的影響,這是因為系統在處理++i時先對i進行了加1運算,即:i=i+1,然后才參與其它運算,而在執行i++時,現將i的值參與其它運算,然后才給自己加1,所以得到的s的值是不同的,這正是++(自加運算)與眾不同的地方。

2. --(自減運算)的定義

與自加運算類似,--(自減運算)也是單目運算,且只能以變量為運算對象,若i為已定義變量,i的自減運算分為--i和i-- ,兩者對i自身的作用是一樣的,即i=i-1 ,但當它們還參與其它運算時,--i先執行自減1運算,然后以i的值參與其它運算,i--則先以i值參與其它運算,然后對i進行自減1運算。

二、經典題型

下列程序執行后輸出結果是什么?

main()

{int a=100;

printf(“a++=%d;”,a++); */①/*

printf(“++a=%d;”,++a); */②/*

printf(“a--=%d;”,a--); */③/*

}

當程序執行到①時,輸出表達式a++,由于自加符++后置,故先輸出a的值100,然后a自加1,即執行完①后輸出“a++=100”,a的值是101。

當程序執行到②時,輸出表達式++a,由于自加符++前置,故a先自加1變為102,然后輸出a的值102,即執行完②后輸出“++a=102”,a的值是102。

當程序執行到③時,輸出表達式a--,由于自加符--后置,故先輸出a的值102,然后a自減1,即執行完③后輸出“a--=102”,a的值是101。

綜上所述,程序輸出結果為:

a++=100;++a=102;a--=102

小結:該題目只要深刻領會++(--)運算在運算符前置和后置時,對其參與的其它運算(操作)的處理時機是不同的,前置時先進行自加1(自減1)運算,再進行其它運算(操作),后置時先參與其它運算(操作),再進行自加1(自減1)運算。

三、深度解析

1. 分析下列程序執行后的輸出結果

#include

main( ){

int i =1,j=2, p=0,q=0 ;

printf(“%d,%d,%d,%d”, p+i , j++ , q+j ,-- i ); */⑤/*

}

很多同學分析:在程序執行到⑤時 p+i輸出1(0+1=1) ;j++輸出2(j=2),j=2+1=3 ;q+j輸出3(0+3=3);--i輸出0(1-1=0) 。得到的結果是:1 ,2 ,3 ,0 。然而上機運行的結果卻是:0 ,2 ,2 ,0 ,這是為什么呢?原來,turboC在printf()函數中,處理表達式列表的順序是從右到左進行的,如果在表達式列表中不包含自加(自減)運算,從哪邊開始處理數據都不會影響運算結果,但是,如果表達式列表中包含了自加(自減)運算,這個“處理數據的順序”就會影響到數據的運算結果。正確的做法是先處理—i,輸出0(1-1=0);其次是q+j,輸出2(0+2=2);再次是j++,輸出2(j=2,執行j++后j=3);最后是p+i,輸出0(0+0=0),處理完畢后按原來順序輸出結果:0,2,2,0 。

結論:turboC在printf(“字符串”,表達式列表)函數中,處理表達式列表的順序是從右到左進行的,如果在表達式列表中包含自加(自減)運算,運算起來就要十分細心。

2.分析如下程序輸出結果:

#include

main( ){

int i=5,j=5,p,q;

p=(i--)+( ++ i)+(i++); */ ⑥/*

q=(++j)+( j++); */ ⑦/*

printf(“%d,%d,%d,%d”,p,q,i,j);

}

嚴格的講,程序中⑥、⑦中的表達式是不符合C語言語法規范的。盡管如此,但在實際當中,我們仍會經常碰到類似的題目,而且這些題目在機器上運行也會有特定的結果,因此在這里我仍然想探討一下其解法。

筆者經過反復推敲,找到了一種解決這類問題的辦法,并在實際應用中與機器執行的結果符合的很好。

我的思路是:將⑥或⑦中右側表達式的運算分為3類:前置(自加或自減)運算、后置(自加或自減)運算和加(減)法運算,首先要進行的是前置運算,其次執行加(減)法運算,最后執行后置運算。如(i--)+( ++ i)+(i++),其中中間的自加運算為前置運算,其前后的自減運算和自加運算都是后置運算,首先進行前置運算,即++i,執行后i=5+1=6;然后執行加法運算,即3個i相加;結果為6+6+6=18,最后執行后置運算,即i=6+1-1=6 。所以題目中p=18,i=6。同理(++j)+( j++)中++j為前置運算,j++為后置運算,先進行前置運算j=5+1=6;然后執行加法運算,即2個j相加6+6=12;最后進行后置運算j=6+1=7 。所以題目中q=12,j=7,程序最后運行結果為:18,12,6,7 。以上方法可擴展到任何含有自加(自減)運算的運算表達式中。

四、結論

當一個表達式中含有多個自加(自減)運算時,可將運算分為前置運算、后置運算和其它運算,按照先執行前置運算,然后執行其它運算,最后執行后置運算的法則,可得到正確的運算結果。

對C語言的教學而言,能讓學生理解到以上的深度,我認為教學的任務就完成了,至于更深層次的研究就是他們以后的事了,希望本文能給廣大C語言教學工作者帶來便利!

參考文獻:

[1] Dennis M. Ritchie等. The C programming Language [M].U.S:Prentice Hall,1988

[2]周查金等. C語言程序設計.北京:高等教育出版社,2000.5

主站蜘蛛池模板: 日韩欧美成人高清在线观看| 一级做a爰片久久免费| 色成人综合| 国产一级α片| 国产一级小视频| 野花国产精品入口| 四虎免费视频网站| 中文字幕在线日本| 亚洲AV无码久久天堂| 9啪在线视频| 激情无码视频在线看| 亚洲—日韩aV在线| 国产精品自拍露脸视频| 日本黄色a视频| 亚洲精品男人天堂| jizz国产在线| 在线99视频| 国产午夜无码片在线观看网站| 亚洲无码日韩一区| 精品成人免费自拍视频| 精品国产aⅴ一区二区三区| 日韩亚洲综合在线| 婷婷色一区二区三区| 国产欧美日韩综合一区在线播放| 免费国产一级 片内射老| 国产色网站| 国产乱码精品一区二区三区中文 | 亚洲成人在线网| 特级欧美视频aaaaaa| 日本伊人色综合网| 午夜福利视频一区| 午夜福利在线观看入口| 91免费国产在线观看尤物| 国产欧美日韩综合在线第一| 成人一区专区在线观看| 无码精品一区二区久久久| 国内丰满少妇猛烈精品播| 91免费国产在线观看尤物| 免费观看男人免费桶女人视频| 亚洲a级在线观看| 午夜天堂视频| 毛片在线区| 中文无码毛片又爽又刺激| 亚洲成人动漫在线| 四虎国产精品永久一区| 国产无人区一区二区三区| 99久久亚洲精品影院| 任我操在线视频| 成人福利在线免费观看| 欧美激情视频在线观看一区| 国产无套粉嫩白浆| 亚洲人精品亚洲人成在线| 国产免费看久久久| 国产成人高清精品免费| 无码在线激情片| 亚洲女人在线| 欧洲精品视频在线观看| 欧美成人精品一级在线观看| 狠狠亚洲五月天| 亚洲三级网站| 午夜日b视频| 国内精品一区二区在线观看| 国产簧片免费在线播放| 亚洲欧美一区二区三区蜜芽| av无码久久精品| 成人午夜久久| 熟妇丰满人妻av无码区| 国产精品亚洲欧美日韩久久| 免费a在线观看播放| 国产欧美高清| 午夜无码一区二区三区| 色综合激情网| 一级做a爰片久久免费| 午夜福利在线观看入口| 亚洲综合国产一区二区三区| 国产日韩欧美在线视频免费观看 | 鲁鲁鲁爽爽爽在线视频观看 | 国产白浆在线观看| 国产欧美网站| 免费福利视频网站| 国产欧美日韩一区二区视频在线| 久久人搡人人玩人妻精品|