• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2021-12-19 20:51白宗輝
      電腦知識與技術(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)算符;方法;技巧

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

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

      C語言中的表達(dá)式的類型比較多,有算術(shù)表達(dá)式,賦值表達(dá)式,條件表達(dá)式,逗號表達(dá)式,關(guān)系表達(dá)式和邏輯表達(dá)式等。每種表達(dá)式都有特定的運(yùn)算符,有的有一個,有的有多個。 我們實(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)先級

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

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

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

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

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

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

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

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

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

      2考慮結(jié)合性

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

      具體規(guī)則可查閱表一。這就要求,學(xué)生能夠像熟練掌握運(yùn)算符的優(yōu)先級一樣,要牢記每個運(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及時標(biāo)注變量值的變化

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

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

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

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

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

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

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

      4合理使用輔助工具“括號”

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

      2)應(yīng)用舉例

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

      3)注意點(diǎn):括號的使用可以幫助我們理解表達(dá)式,切記括號的添加和使用不是隨意的,括號的使用不能改變原來的運(yùn)算次序和方向。

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

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

      如果表達(dá)式1&&表達(dá)式2,當(dāng)表達(dá)式1的值為0時,整個表達(dá)式運(yùn)算停止,不再對表達(dá)式2進(jìn)行運(yùn)算。如果表達(dá)式1的值為非0時,則要對表達(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。同時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,所以整個表達(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,整個表達(dá)式為假,右邊表達(dá)式的值為非0,整個表達(dá)式的結(jié)果為真。

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

      如果表達(dá)式1||表達(dá)式2,當(dāng)表達(dá)式1的值為非0時,表達(dá)式停止運(yùn)算;如果表達(dá)式1的值為0時,則繼續(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á)式的值為真,整個表達(dá)式停止運(yùn)算。在判斷++a是否為0后,a自增1。所以表達(dá)式執(zhí)行結(jié)束后,a=2,b=1。

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

      (1)這時候要先判斷邏輯或運(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á)式的值為真,整個表達(dá)式停止運(yùn)算。這時候不再執(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í)行完整個語句后,a=1,b=2,c=2。

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

      C語言學(xué)習(xí)者,只要在掌握c語言各類運(yùn)算符的優(yōu)先級和結(jié)合性基礎(chǔ)上,參照本篇文章所講的五個要素,多練習(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] 基于省級創(chuàng)新訓(xùn)練平臺的“C語言程序設(shè)計(jì)”教學(xué)改革與實(shí)踐[J].科教導(dǎo)刊,2017(22):115-116.

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

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

      猜你喜歡
      運(yùn)算符技巧方法
      肉兔短期增肥有技巧
      老祖?zhèn)魇诨具\(yùn)算符
      用手機(jī)插頭的思路學(xué)習(xí)布爾運(yùn)算符
      指正要有技巧
      提問的技巧
      可能是方法不對
      用對方法才能瘦
      四大方法 教你不再“坐以待病”!
      捕魚
      表達(dá)式求值及符號推導(dǎo)
      邯郸县| 连平县| 荥经县| 九龙县| 宜章县| 庆元县| 张北县| 唐海县| 温宿县| 汉源县| 历史| 宁国市| 台北市| 开远市| 辉县市| 贵南县| 肇庆市| 循化| 荃湾区| 青州市| 丹东市| 从化市| 宜川县| 五常市| 莱州市| 长宁县| 博兴县| 龙里县| 木兰县| 凉城县| 彰武县| 黄山市| 东乡县| 深圳市| 海伦市| 固镇县| 卢龙县| 凭祥市| 团风县| 厦门市| 山东|