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

C語言自增\\自減運算符的應用

2010-12-31 00:00:00李春玲
考試周刊 2010年43期

摘 要: Ca語言的一個主要特點是運算符豐富、范圍廣。靈活地使用各種運算符可以實現在其它高級語言中難以實現的運算。本文主要對C語言中自增、自減兩個運算符的使用作詳細說明。

關鍵詞: C語言 自增、自減運算符 功能 運算規則

C語言中的運算符非常豐富,把除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理,靈活使用各種運算符可以實現在其他高級語言中難以實現的運算。在這些運算符中,最難理解、最易出錯也最為靈活的便是自增、自減運算符。下面我詳細歸納了使用自增、自減運算符時的注意事項,并結合運算符的優先級和其本身的特點,對Turbo C環境下的自增、自減運算符的功能與運算規則加以分析。

1.自增、自減運算符的作用及形式

C語言中的自增運算符“++”和自減運算符“--”的作用是使運算對象的值增1或減1,如i++,相當于i=i+1;i--,相當于i=i-1。因此,自增、自減運算本身也是一種賦值運算,其運算對象只要是標準類型的變量,不論是字符型、整型、實型或是枚舉型都可作為運算對象,而由于常量和表達式不占存儲單元,因此不能使用常量或表達式作運算對象,如1++、(a+b)--等都是非法的。

自增、自減運算符有兩種使用形式:前置式(++i,--i)和后置式(i++,i--)。前置式中先使i加減1,再使用i,后置式中先使用i,再使i加減1。

2.自增、自減運算符的應用

很多C語言教材和參考書都說明自增、自減運算符具有“從右向左”的結合性,并且由于操作數只有一個,屬于單目操作,因此優先級也高于其它雙目運算符和三目運算符的優先級。但在實際的編程中我們發現,自增、自減運算符的運算規則在不同的表達式中也不盡相同。下面我們就從自增、自減運算符的以下幾點應用來進行分析。

2.1自增、自減運算符在賦值表達式中的應用。

例1:main()

{int i=1,j=2,k;

k=i+++j;

printf(\"k=%d,i=%d,j=%d\\",k,i,j);

}

這里的i+++j是理解成i+(++j),還是理解成(i++)+j呢?Turbo C編譯處理將自左向右解釋為(i++)+j,而不是i+(++j),因此程序運行結果為:k=3,i=2,j=2。

2.2自增、自減運算符在條件表達式中的應用。

例:main()

{int i=1,j=3,k;

k=i>j?++i:++j;

printf(\"k=%d,i=%d,j=%d\\",k,i,j);

}

由于程序中的“i>j?++i:++j”是一個條件表達式,雖然自增運算符的優先級比條件運算符的優先級高,但在程序運行時,先對i是否大于j進行判斷,由于(i>j)為假,因此只需計算++j,j自增后為4,而對于++i并不計算,i仍為1,程序的運行結果為:k=4,i=1,j=4。

2.3自增、自減運算符在邏輯表達式中的應用。

例:main()

{int i=0,j=1,k=2,x;

x=++i||++j++k;

printf(\"x=%d,i=%d,j=%d,k=%d\\",x,i,j,k);

}

程序中的賦值語句“x=++i||++j++k;”在執行時,雖然里邊包含三個自增運算:++i、++j和++k,而自增運算符的優先級又高于邏輯運算符的優先級,但在Turbo C中實際只執行了++i,對++j和++k并沒有執行。這是因為在C語言中針對||運算符和運算符在使用的時候有一個規定:在一個復雜的邏輯表達式中,若前面子表達式的值能夠決定整個表達式的值,則后面的子表達式不需計算。在表達式x=++i||++j++k中,++i的值為1,它與后面的子表達式++j++k進行||運算,它能夠決定整個表達式的值,后面的++j和++k無需執行,因此程序的運行結果為:x=1,i=1,j=1,k=2。

2.4自增、自減運算符和其它單目運算符的應用。

例:main()

{int i=1,j;

j=-i++;

printf(\"%d,%d\\",i,j);

}

程序中對于同一個運算對象i而言,-和++都是單目運算符,優先級相同,那么到底是先運算-i呢,還是先運算i++。由于單目運算符具有從右向左的結合性,所以i先于右邊的運算符++結合,即先計算i++,在計算-i,表達式等價于-(i++)。程序運行結果為:2,-1。

2.5自增、自減運算符在函數中的應用。

例:main()

{int i=3;

printf(\"%d,%d\\",i,i++);

}

在調用函數時,對實參的求值順序,C標準并無統一規定。在有的系統中,從左至右求值,程序運行結果為:3,3。但在多數系統(如:Turbo C)中對函數參數的求值順序是從右向左,上面printf函數中藥輸出兩個表達式的值(i和i++),先求出第二個表達式i++的值3(i未自增時的值),然后在求解第一個表達式的值,由于在求解第二個表達式后,i自增1,i變為4,所以printf函數中的第一個參數i的值為4,程序運行結果為:4,3。

為了避免出現類似錯誤,程序最好改寫成:

main()

{int i=3,j;

j=i++;

printf(\"%d,%d\\",i,j);

}

綜上所述,在使用自增、自減運算符時,若在表達式或語句中只包含一種操作時(自增或自減),則前置式和后置式的作用都是一樣的,都是使變量加1或減1。若自增、自減運算符和其它運算符聯合使用時,就需根據從不同運算符優先級和結合性兩點上綜合考慮變量的變化方式。若在函數調用中使用自增、自減運算符時,我們要考慮不同的系統中處理方法不盡相同,所以對于初學者而言,若是不能熟練的掌握自增、自減運算符的使用,就需避免寫出別人看不懂,也不知道系統會怎樣執行的程序,盡量在比較單一的表達式中實現程序。總之,掌握好C語言的運算符、表達式對編寫簡潔明快、清晰易懂的程序非常重要。

參考文獻:

[1]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005.

[2]楊路明.C語言程序設計[M].北京:北京郵電大學出版社,2003.

[3]黃維通,馬力妮.C語言程序設計[M].北京:清華大學出版社,2003.

[4]宗大華,蔣瑋.C語言程序設計[M].人民郵電出版社,2003.

[5]秦玉平,戴心來.C語言中的自增自減運算[J].渤海大學學報,2004,(4):368.

主站蜘蛛池模板: 欧美19综合中文字幕| 青青青国产免费线在| 国产一二三区视频| 极品国产在线| 日本三级欧美三级| 3p叠罗汉国产精品久久| 亚洲高清日韩heyzo| www.youjizz.com久久| 亚洲精品福利网站| www.av男人.com| 暴力调教一区二区三区| 91无码国产视频| 好紧太爽了视频免费无码| 欧美精品xx| 亚洲自拍另类| 久久国产精品电影| 97在线国产视频| 欧美成人亚洲综合精品欧美激情| 美女毛片在线| 婷婷午夜天| 19国产精品麻豆免费观看| 国内精品久久久久久久久久影视 | 国产综合无码一区二区色蜜蜜| 欧美成人看片一区二区三区| 亚洲v日韩v欧美在线观看| 国产精品视频导航| 欧美啪啪一区| 国产喷水视频| 在线免费亚洲无码视频| 成人午夜网址| 色哟哟国产成人精品| 亚洲国产精品一区二区高清无码久久| 国产精品污视频| 99久久国产自偷自偷免费一区| 澳门av无码| 欧美专区在线观看| 色综合手机在线| 欧美a在线| 国产欧美日韩资源在线观看| 丰满人妻一区二区三区视频| 午夜视频在线观看免费网站| 久久网综合| 亚洲69视频| 玖玖免费视频在线观看| 国产一级在线播放| 成年人久久黄色网站| a级毛片免费播放| 777国产精品永久免费观看| 成人免费视频一区二区三区 | 国产欧美中文字幕| a国产精品| 亚洲男人在线| 91福利免费视频| 在线看片中文字幕| 国产精品成人第一区| 亚洲无码免费黄色网址| 噜噜噜久久| 亚洲a级在线观看| www.亚洲色图.com| 在线另类稀缺国产呦| 亚洲高清在线播放| 99在线视频免费| 国产欧美另类| 国产91透明丝袜美腿在线| 午夜色综合| 99无码中文字幕视频| 国产人成在线观看| 福利在线一区| 久久精品免费看一| 少妇精品网站| 国产夜色视频| 一级毛片中文字幕| 亚洲V日韩V无码一区二区| 亚洲aaa视频| 国产区成人精品视频| 亚洲欧美日韩色图| 久久毛片基地| 精品国产自在现线看久久| 国产精品久久久久久久久| 欧美精品v日韩精品v国产精品| 国产啪在线| 亚洲一区无码在线|