网站大量收购独家精品文档,联系QQ:2885784924

所有的程式均可由三种控制结构写成.PPT

  1. 1、本文档共137页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
所有的程式均可由三种控制结构写成

C提供了數種指定運算子,使得指定運算式可以縮寫。 例如,以下的敘述式: c = c + 3; 可利用加法指定運算子 += (addition assignment operator +=) 縮寫成 c += 3; +=運算子會把在此運算子右邊的運算式的值,加上此運算子左邊變數的值,然後將結果存到運算子左邊的變數。 C還提供了單元遞增運算子 (increment operator)++ 和單元遞減運算子 (decrement operator)--。我們將這兩種運算子整理列成圖3.12。 如果變數c被遞增1的話,我們可用運算子++來代替運算式c=c+1或c+=1。 如果遞增或遞減運算子放在變數之前的話,他們稱為前置遞增 (preincrement) 或前置遞減運算子 (predecrement operators)。 如果遞增或遞減運算子放在變數之後的話,他們稱為後置遞增 (postincrement) 或後置遞減運算子 (postdecrement operators)。 前置遞增(前置遞減)變數會使變數的值遞增(遞減)1,然後將變數新的值應用在該變數所出現的運算式當中。 後置遞增(後置遞減)一個變數會使變數目前的值用在該變數出現的運算式當中,然後該變數會遞增(遞減)1。 圖3.13的程式示範了前置遞增與後置遞增運算子的差異。 在此程式中,對變數 c 的後置遞增會使它在被 printf 敘述式使用之後,才加 1。 而對變數 c 的前置遞增,則會使它在被 printf 敘述式使用之前,便遞加 1。. 此程式印出了變數c在使用++運算子之前及之後的值。 至於遞減運算子(--)的運作方式則與此相似。 因此,圖3.10中的三個指定敘述式 passes = passes + 1; failures = failures + 1; student = student + 1; 可以利用指定運算子改寫成 passes += 1; failures += 1; student += 1; 也可以利用前置遞增運算子改寫成 ++passes; ++failures; ++student; 或者利用後置遞增運算子改寫成 passes++; failures++; student++; 有一點需注意的是,若是被遞增或遞減之變數位於一個只含有此變數的敘述式之內的話,那麼不論是前置遞增(減)或後置遞增(減),其效果是一樣的。 只有當變數出現在長運算式中,前置遞增(減)和後置遞增(減)的效果才會不一樣。 到目前為止我們所學到的運算式中,只有單純的變數名稱才能做為遞增或遞減運算子的運算元。 圖3.14列出了到目前為止,我們所介紹過之運算子的運算優先順序和結合性。 優先權順序是以表格的上方逐次往下遞減。 表中第二行描述了同一優先等級之運算子的結合性。 請注意,表中的條件運算子(?:),一元的遞增(++),遞減(--),正(+),負(-)及型別轉換運算子,以及指定運算子(=, +=, -=, *=, /=和%=)的結合性都是由右至左。 第三行則說明了這些運算子所屬的群組名稱。 圖3.14中其它所有運算子的結合性都是由左至右。 計算出來的平均成績並不一定是整數。 通常平均數會是如7.2或-93.5之類的小數。 這種數值稱為浮點數,以資料型別float來表示。 變數average被宣告成float型別 (第12行),以便存放小數。 不過total/counter的計算結果是一個整數,這是因為total和counter這兩個變數都是整數之故。 在C裡,兩個整數相除 (integer division) 的小數部分將被捨棄。 因此當這個相除的運算執行後,小數部分已被捨棄,此時被指定給average的值將只剩下整數部分。 為了能保留計算結果的小數部分,我們必須製造一個暫時的浮點數。 C提供了單元強制型別轉換運算子 (cast operator) 來負責這項工作。 第38行 average = ( float ) total / counter; 含有 (float) 這個強制型別轉換運算子,它會為它的運算元total產生一個暫時的浮點數拷貝。 而存放在total的值仍然是個整數。 以這種方式來使用強制型別轉換運算子稱為明確地轉換 (explicit conversion)。 此時,這項運算變成了一個浮點數(total的暫時float版本)除以一個整數(值存於counter)。 大多數的電腦只能夠執行運算元型別相同的運算式。 為了確保所有的運算元型別相同,編譯器會對某些運算元執行一種稱為提升 (promotion) 的動作(也稱為隱含式轉換,implicit conversion)。 例如在一個含有int和float型別的運算式裡,ANSI標準規定對int的運算元複

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档