国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言表達(dá)式運(yùn)算技巧探究

2021-12-19 20:51:43白宗輝
電腦知識(shí)與技術(shù) 2021年32期
關(guān)鍵詞:運(yùn)算符技巧方法

白宗輝

摘要:通過具體的步驟和案例分析,詳解C語言表達(dá)式的運(yùn)算方法和技巧。論文的研究成果,即是表達(dá)式求解的具體思路、方法和技巧,可以為C語言學(xué)習(xí)者借鑒學(xué)習(xí),也可以為C語言教師提供教學(xué)參考。

關(guān)鍵詞:表達(dá)式運(yùn)算;運(yùn)算符;方法;技巧

中圖分類號(hào):TP311 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2021)32-0109-02

C語言中的表達(dá)式的類型比較多,有算術(shù)表達(dá)式,賦值表達(dá)式,條件表達(dá)式,逗號(hào)表達(dá)式,關(guān)系表達(dá)式和邏輯表達(dá)式等。每種表達(dá)式都有特定的運(yùn)算符,有的有一個(gè),有的有多個(gè)。 我們實(shí)際學(xué)習(xí)中遇到的表達(dá)式,大部分不是一種表達(dá)式,而是幾種不同類型的混合表達(dá)式,表達(dá)式中更有多種不同的運(yùn)算符和操作數(shù)。

因此很多學(xué)習(xí)C程序設(shè)計(jì)的學(xué)生,比較畏懼c語言表達(dá)式的運(yùn)算問題,遇到之后,感覺無從下手。本文將深入探究有關(guān)c語言表達(dá)式的運(yùn)算技巧問題,供C語言學(xué)習(xí)的初學(xué)者和C語言授課教師借鑒和參考。

1考慮優(yōu)先級(jí)

1)定義:表達(dá)是由各種運(yùn)算符和操作數(shù)組成,一個(gè)表達(dá)式中,操作數(shù)和運(yùn)算符的結(jié)合先后次序是由運(yùn)算符的優(yōu)先級(jí)決定。不同的運(yùn)算符具有不同的優(yōu)先級(jí)。優(yōu)先級(jí)越高,越先進(jìn)行計(jì)算。

2) C運(yùn)算優(yōu)先級(jí)與結(jié)合性表(表一):C語言運(yùn)算符的優(yōu)先級(jí)共有15級(jí),按照次序,最高的是1級(jí),最低的是15級(jí)。

要求學(xué)生必須熟記每一種運(yùn)算符的優(yōu)先級(jí)。

3)應(yīng)用舉例。

例1,c語言表達(dá)式:-a+(a+b)/2。分析表達(dá)式后可知,表達(dá)式中優(yōu)先級(jí)最高的運(yùn)算符是“()”是1級(jí),余下依次是“-”是2級(jí),“/”是3級(jí),“+”是4級(jí)。表達(dá)式的運(yùn)算過程:

(1)求負(fù)運(yùn)算符高于加法運(yùn)算符,先求-a的值。

(2)括號(hào)運(yùn)算符優(yōu)先級(jí)高于除法優(yōu)先級(jí),求(a+6)的值。

(3)除法的優(yōu)先級(jí)高于加法優(yōu)先級(jí),求(2)/2的值。

(4)求(1)+(3)的值,結(jié)算線束。

2考慮結(jié)合性

1)定義:如果運(yùn)算符的優(yōu)先級(jí)相同,那么運(yùn)算次序由結(jié)合性決定。結(jié)合性是指操作數(shù)左右兩邊的兩個(gè)運(yùn)算符的優(yōu)先級(jí)相同時(shí),應(yīng)該優(yōu)先運(yùn)算的方向。結(jié)合性分為左結(jié)合性即運(yùn)算方向?yàn)樽宰笾劣?,和右結(jié)合性即運(yùn)算方向?yàn)樽杂抑磷蟆?/p>

具體規(guī)則可查閱表一。這就要求,學(xué)生能夠像熟練掌握運(yùn)算符的優(yōu)先級(jí)一樣,要牢記每個(gè)運(yùn)算符的結(jié)合性。

2)結(jié)合性應(yīng)用舉例:

例2,如a、b、c、d均為整型變量,求表達(dá)式a=b=c=d=3的值。

根據(jù)運(yùn)算符的結(jié)合性可知,運(yùn)算符的結(jié)合方向?yàn)樽杂蚁蜃螅兞抠x值過程如下,d=3,c=d,c=3,b=c,b=3,a=b,a=3。

3及時(shí)標(biāo)注變量值的變化

1)概念注釋:表達(dá)式中有賦值運(yùn)算符時(shí),變量都會(huì)進(jìn)行初始化賦值。但是變量的值在運(yùn)算過程中是會(huì)發(fā)生變化的,每次運(yùn)算時(shí),要看變量上一次結(jié)束后的最新值。如果一直用初始化的值,那么就會(huì)出錯(cuò)了。

2)應(yīng)用舉例,

例3,已知b=10,求c語言表達(dá)式: b+=b-=b*b的值。

根據(jù)我們上面講到的運(yùn)算規(guī)則,

(1)考慮優(yōu)先級(jí),先進(jìn)行b*b運(yùn)算,即b*b=10*10=100,表達(dá)式b+=b-=b*b變?yōu)閎+=b-=100。此時(shí)無變量值發(fā)生變化。

(2)考慮結(jié)合性:計(jì)算b+=b-=100,根據(jù)賦值運(yùn)算符結(jié)合性是自右向左,先執(zhí)行b-=100,相當(dāng)于b=b-100=10-100= -90,此時(shí)應(yīng)及時(shí)標(biāo)注變量變化,即b=-90,同時(shí)表達(dá)式b==b-= 100變?yōu)閎+=-90。再運(yùn)算b+= -90,相當(dāng)于b=b+(-90)=-90-90= -180。

在本步驟中可以注意到,變量的標(biāo)注其實(shí)是伴隨著優(yōu)先級(jí)和結(jié)合性使用過程當(dāng)中的,并不是單獨(dú)地存在于某一環(huán)節(jié)。

4合理使用輔助工具“括號(hào)”

1)概念注釋:雖然,我們知道在計(jì)算順序上可以利用優(yōu)先級(jí)和結(jié)合性判定c語言表達(dá)式的運(yùn)算方向。但有時(shí)候在計(jì)算的時(shí)候直觀性仍然很差。這時(shí)候我們可以在表達(dá)式中添加括號(hào),來輔助我們清晰判斷程序的執(zhí)行方向和先后順序。

2)應(yīng)用舉例

例4,b+=b-=b*b+a,共有四個(gè)運(yùn)算符,我們根據(jù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性可以加括號(hào)如下:b+=(b-=((b*b)+a)),本表達(dá)式中共加了3個(gè)括號(hào),第一個(gè)括號(hào)和第二個(gè)括號(hào),是根據(jù)運(yùn)算符的優(yōu)先級(jí),第三個(gè)括號(hào)是根據(jù)運(yùn)算符的結(jié)合性。3個(gè)括號(hào)的輔助,即讓c語言表達(dá)式的運(yùn)算次序和方向變得一目了然。

3)注意點(diǎn):括號(hào)的使用可以幫助我們理解表達(dá)式,切記括號(hào)的添加和使用不是隨意的,括號(hào)的使用不能改變?cè)瓉淼倪\(yùn)算次序和方向。

5含有邏輯運(yùn)算符的表達(dá)式的求值,及表達(dá)式中變量的求值

1)邏輯與運(yùn)算符的表達(dá)式。

如果表達(dá)式1&&表達(dá)式2,當(dāng)表達(dá)式1的值為0時(shí),整個(gè)表達(dá)式運(yùn)算停止,不再對(duì)表達(dá)式2進(jìn)行運(yùn)算。如果表達(dá)式1的值為非0時(shí),則要對(duì)表達(dá)式2進(jìn)行運(yùn)算。

(1)邏輯與“&&”運(yùn)算符左邊表達(dá)式為假。

例5,如定義:int a=0,b=2。語句1 為:a++&&b++,求語句1的值及執(zhí)行語句1后a和b的值。

解:執(zhí)行語句1,先判斷a++是否為0,由于a為0,所以a++為0,則邏輯表達(dá)式a++&&b++的值為0,表達(dá)式運(yùn)算停止,不再執(zhí)行&&運(yùn)算右邊b++的運(yùn)算。在判斷a是否為非0后,a的值自增1。所以語句1執(zhí)行后,表達(dá)式的值為0。同時(shí)a=1,b=2。

(2)邏輯與“&&”運(yùn)算符左邊表達(dá)式為真。

例6,如定義:int a=1,b=2;

a++&&b++;

求表達(dá)式a++&&b++的值,及執(zhí)行該表達(dá)式后a和b的值。

解:執(zhí)行表達(dá)式a++&&b++,先判斷a是否為0,由于a為非0值1,所以a++為非0。故判斷b是否為非0,b為非0,所以整個(gè)表達(dá)式的值為真。在判斷a是否為非0后,a的值自增1,同理,在判斷b是否為非零后,b自增1,所以,表達(dá)式執(zhí)行完畢后,a=2,b=3。

由此可見,邏輯與表達(dá)式的運(yùn)算,如果“&&”運(yùn)算符左邊表達(dá)式為0,則不執(zhí)行邏輯與運(yùn)算,運(yùn)算停止,邏輯與表達(dá)式的值為假;如果“&&”運(yùn)算符左邊表達(dá)式為非0,則執(zhí)行邏輯與運(yùn)算,表達(dá)式的結(jié)果由右邊表達(dá)式的值決定,右邊表達(dá)式的結(jié)果為0,整個(gè)表達(dá)式為假,右邊表達(dá)式的值為非0,整個(gè)表達(dá)式的結(jié)果為真。

2)邏輯或表達(dá)式的運(yùn)算。

如果表達(dá)式1||表達(dá)式2,當(dāng)表達(dá)式1的值為非0時(shí),表達(dá)式停止運(yùn)算;如果表達(dá)式1的值為0時(shí),則繼續(xù)執(zhí)行邏輯或運(yùn)算。

例7,已知a=1,b=1;

++a||++b;

求表達(dá)式++a||++b的值,及執(zhí)行后a、b的值。

解:執(zhí)行表達(dá)式++a||++b,根據(jù)邏輯或結(jié)合性是自左向右,所以先判斷++ a的值,由于++a的值為非0,所以表達(dá)式的值為真,整個(gè)表達(dá)式停止運(yùn)算。在判斷++a是否為0后,a自增1。所以表達(dá)式執(zhí)行結(jié)束后,a=2,b=1。

3)邏輯或與邏輯與的混合表達(dá)式。

(1)這時(shí)候要先判斷邏輯或運(yùn)算符左邊表達(dá)式的結(jié)果,不一定先進(jìn)行與運(yùn)算。

例8,已知,int ?a=1,b=1,c=1;

++a||++b&&++c;

求表達(dá)式++a||++b&&++c的值,及執(zhí)行該表達(dá)式后a、b、c的值。

解:執(zhí)行表達(dá)式++a||++b&&++c,先判斷++a的值,由于++a的值為非0,所以表達(dá)式的值為真,整個(gè)表達(dá)式停止運(yùn)算。這時(shí)候不再執(zhí)行“||”右邊的表達(dá)式“++b&&++c”的運(yùn)算。在判斷++a是否為0后,a自增1。故表達(dá)式執(zhí)行結(jié)束后,a=2,b=1,c=1。

(2)邏輯或“||”運(yùn)算符的左邊表達(dá)式為假,先執(zhí)行邏輯與運(yùn)算。

例9,已知,int ?a=0,b=1,c=1;

a++||++b&&++c;

求表達(dá)式a++||++b&&++c的值,及執(zhí)行該表達(dá)式后a、b、c的值。

解:先判斷a是否為0,由于a為0,則執(zhí)行++b&&++c,判斷++b不為0,執(zhí)行與運(yùn)算,因?yàn)?+c不為0,所以邏輯與表達(dá)式為真,所以表達(dá)式a++||++b&&++c為真。同理,在執(zhí)行完整個(gè)語句后,a=1,b=2,c=2。

從上面的實(shí)例中可以總結(jié)出:邏輯表達(dá)式運(yùn)算時(shí),最重要的一點(diǎn)是判斷邏輯表達(dá)式什么時(shí)候停止運(yùn)算,什么時(shí)候執(zhí)行運(yùn)算。并通過執(zhí)行過程,可以判斷出變量的值是否改變。

C語言學(xué)習(xí)者,只要在掌握c語言各類運(yùn)算符的優(yōu)先級(jí)和結(jié)合性基礎(chǔ)上,參照本篇文章所講的五個(gè)要素,多練習(xí),多思考,多總結(jié),就能夠準(zhǔn)確地解決各種復(fù)雜的C語言表達(dá)式的運(yùn)算。而以扎實(shí)的基礎(chǔ),輕松跨入C語言下一階段的學(xué)習(xí)。

參考文獻(xiàn):

[1] 李紅衛(wèi),李秉璋.C程序設(shè)計(jì)與訓(xùn)練[M].3版. 大連理工大學(xué)出版社,2014.

[2] 譚浩強(qiáng).C程序設(shè)計(jì)[M].5版. 北京: 清華大學(xué)出版社, 2017.

[3] C/C++語言中的復(fù)合自增自減運(yùn)算規(guī)則探究[J].電腦編程技巧與維護(hù),2019(9):47-49.

[4] 基于省級(jí)創(chuàng)新訓(xùn)練平臺(tái)的“C語言程序設(shè)計(jì)”教學(xué)改革與實(shí)踐[J].科教導(dǎo)刊,2017(22):115-116.

[5] 李海豐,李俊生,謝麗霞,等."三位一體"的C語言程序設(shè)計(jì)課程教學(xué)改革實(shí)踐[J].計(jì)算機(jī)時(shí)代,2019(11):93-95.

【通聯(lián)編輯:唐一東】

猜你喜歡
運(yùn)算符技巧方法
肉兔短期增肥有技巧
老祖?zhèn)魇诨具\(yùn)算符
開好家長(zhǎng)會(huì)的幾點(diǎn)技巧
甘肅教育(2020年12期)2020-04-13 06:24:46
指正要有技巧
提問的技巧
可能是方法不對(duì)
用對(duì)方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
C++運(yùn)算符重載剖析
新营市| 南城县| 宜城市| 和政县| 许昌县| 庆安县| 荔波县| 谷城县| 天柱县| 河西区| 云和县| 读书| 定州市| 吴川市| 汝阳县| 怀柔区| 赤城县| 北票市| 江北区| 鲁甸县| 白水县| 玛纳斯县| 双辽市| 嵊泗县| 曲阜市| 桂林市| 松潘县| 昭平县| 金山区| 旬阳县| 祁门县| 二连浩特市| 鹰潭市| 交城县| 陆良县| 梅河口市| 台北县| 根河市| 东至县| 新余市| 张家港市|