學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > 表達(dá)式與語(yǔ)句的區(qū)別

表達(dá)式與語(yǔ)句的區(qū)別

時(shí)間: 肖陽(yáng)1034 分享

表達(dá)式與語(yǔ)句的區(qū)別

  表達(dá)式它是由常量、變量、運(yùn)算符組合,計(jì)算以后返回一個(gè)結(jié)果值。表達(dá)式的結(jié)束標(biāo)志是分號(hào)(;),C語(yǔ)言中所有的語(yǔ)句和聲明都是用分號(hào)結(jié)束,在分號(hào)出現(xiàn)之前,語(yǔ)句是不完整的。語(yǔ)句與表達(dá)式這兩者有何區(qū)別呢?下面就跟著學(xué)習(xí)啦小編一起來(lái)看看吧。

  一、表達(dá)式

表達(dá)式本身什么事情都不做,只是返回結(jié)果值。在程序不對(duì)返回的結(jié)果值做任何操作的情況下,返回的結(jié)果值不起任何作用,表達(dá)式的作用有兩點(diǎn),一個(gè)是放在賦值語(yǔ)句的右邊,另一個(gè)是作為函數(shù)的參數(shù)(以后再介紹)。

  表達(dá)式返回的結(jié)果值是有類(lèi)型的。表達(dá)式隱含的數(shù)據(jù)類(lèi)型取決于組成表達(dá)式的變量和常量的類(lèi)型。因此,表達(dá)式的返回值有可能是某種大小的整型,或者是某精度的浮點(diǎn)型,或者是某種指針類(lèi)型。

  這里面就有類(lèi)型轉(zhuǎn)化的問(wèn)題了,在前面說(shuō)整型運(yùn)算的時(shí)候也提到過(guò)。類(lèi)型轉(zhuǎn)化的原則是從低級(jí)向高級(jí)自動(dòng)轉(zhuǎn)化(除非人為的加以控制)。計(jì)算的轉(zhuǎn)換順序基本是這樣的:

  字符型-->整型-->長(zhǎng)整型-->浮點(diǎn)型-->單精度型-->雙精度型

  就是當(dāng)字符型和整型在一起運(yùn)算時(shí),結(jié)果為整型,如果整型和浮點(diǎn)型在一起運(yùn)算,所得的結(jié)果就是浮點(diǎn)型,如果有雙精度型參與運(yùn)算,那么答案就是雙精度型了。

  強(qiáng)制轉(zhuǎn)換是這樣的,在類(lèi)型說(shuō)明符的兩邊加上括號(hào),就把后面的變量轉(zhuǎn)換成所要的類(lèi)型了。如:

  (int) a;

  (float) b;

  第一個(gè)式子是把a(bǔ)轉(zhuǎn)換成整型,如果原先有小數(shù)部分,則舍去。

  第二個(gè)式子是把b轉(zhuǎn)換成浮點(diǎn)型,如果原先是整數(shù),則在后面補(bǔ)0。

  每一個(gè)表達(dá)式的返回值都具有邏輯特性。如果返回值為非0,則該表達(dá)式返回值為真,否則為假。這種邏輯特性可以用在程序流程控制語(yǔ)句中。

  有時(shí)表達(dá)式也不參加運(yùn)算,如:

  if(a||b) …………

  5>3?a++:b++;

  當(dāng)a為真時(shí),b就不參加運(yùn)算了,因?yàn)椴还躡如何,條件總是真。

  二、語(yǔ)句

  (一)、賦值語(yǔ)句

  其實(shí)這個(gè)問(wèn)題,在講賦值運(yùn)算符的時(shí)候已經(jīng)講了一些了。

  Amount=1+2;

  Total=Counter/3+5;

  Area=Height*Width;

  也許你會(huì)發(fā)現(xiàn),這些賦值語(yǔ)句很象代數(shù)方程,在某些情況下,我們的確可以這樣理解,但有時(shí)它們是不一樣的??聪旅妫?/p>

  Num=Num+1;

  這顯然不是一個(gè)等式。

  (二)、用逗號(hào)分隔開(kāi)的聲明語(yǔ)句

  C語(yǔ)言可大多數(shù)語(yǔ)言一樣,允許用逗號(hào)分隔聲明語(yǔ)句中的標(biāo)識(shí)符列表,說(shuō)明這些運(yùn)算符是同一變量類(lèi)型。例如:

  float Area,Height,Width;

  但有些程序員喜歡把標(biāo)識(shí)符寫(xiě)在不同的行上。如:

  float Area,

  Height,

  Width;

  這樣寫(xiě)至少有一個(gè)好處,就是可以在每個(gè)標(biāo)識(shí)符后邊加上注釋。

  在聲明變量的時(shí)候,也可以直接給變量賦值,這叫做變量的初始化。

  如:int a;

  a=3;

  等價(jià)于:

  int a=3;

  我們也讓某些變量初始化,某些不初始化,如:

  int a=3,b,c=5;

  在進(jìn)行初始化時(shí),初始化表達(dá)式可以是任意的(對(duì)全局變量和靜態(tài)變量有區(qū)別),由于逗號(hào)運(yùn)算符是從左到右運(yùn)算的,那么看看這樣行不行?

  int a=3,b=a,c=5;

  (三)、標(biāo)準(zhǔn)輸入輸出語(yǔ)句

  Turbo C 2.0標(biāo)準(zhǔn)庫(kù)提供了兩個(gè)控制臺(tái)格式化輸入、輸出函數(shù)scanf();和printf();這兩個(gè)函數(shù)可以在標(biāo)準(zhǔn)輸入輸出設(shè)備上以各種不同的格式讀寫(xiě)數(shù)據(jù)。scanf() 函數(shù)用來(lái)從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán))上讀數(shù)據(jù),printf()函數(shù)用來(lái)向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫(xiě)數(shù)據(jù)。下面詳細(xì)介紹這兩個(gè)函數(shù)的用法。

  1.標(biāo)準(zhǔn)輸入語(yǔ)句

  scanf()函數(shù)是格式化輸入函數(shù), 它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤(pán)) 讀取輸入的信息。其調(diào)用格式為:

  scanf(<格式化字符串>, <地址表>);

  格式化字符串包括以下三類(lèi)不同的字符;

  (1).空白字符:空白字符會(huì)使scanf()函數(shù)在讀操作中略去輸入中的一個(gè)或多個(gè)空白字符。

  (2).非空白字符:一個(gè)非空白字符會(huì)使scanf()函數(shù)在讀入時(shí)剔除掉與這個(gè)非空白字符相同的字符。

  (3).格式化說(shuō)明符:以%開(kāi)始,后跟一個(gè)或幾個(gè)規(guī)定字符,用來(lái)確定輸出內(nèi)容格式。

  Turbo C 2.0提供的輸入格式化規(guī)定符如下:

  ━━━━━━━━━━━━━━━━━━━━━━━━━━

  符號(hào) 作用

  ──────────────────────────

  %d 十進(jìn)制有符號(hào)整數(shù)

  %u 十進(jìn)制無(wú)符號(hào)整數(shù)

  %f 浮點(diǎn)數(shù)

  %s 字符串

  %c 單個(gè)字符

  %p 指針的值

  %x,%X 無(wú)符號(hào)以十六進(jìn)制表示的整數(shù)

  %o 無(wú)符號(hào)以八進(jìn)制表示的整數(shù)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━

  地址表是需要讀入的所有變量的地址,而不是變量本身,取地址符為'&'。各個(gè)變量的地址之間同,分開(kāi)。

  例如:

  scanf(%d,%d,&i,&j);

  上例中的scanf()函數(shù)先讀一個(gè)整型數(shù),然后把接著輸入的逗號(hào)剔除掉,最后讀入另一個(gè)整型數(shù)。如果,這一特定字符沒(méi)有找到,scanf()函數(shù)就終止。若參數(shù)之間的分隔符為空格,則參數(shù)之間必須輸入一個(gè)或多個(gè)空格。

  說(shuō)明:

  (a).對(duì)于各個(gè)變量,類(lèi)型說(shuō)明符是什么,輸入格式化說(shuō)明符就應(yīng)該用對(duì)應(yīng)的類(lèi)型。否則會(huì)出現(xiàn)程序錯(cuò)誤或輸入數(shù)據(jù)和理想的不一樣。

  (b).對(duì)于字符串?dāng)?shù)組或字符串指針變量,由于數(shù)組名和指針變量名本身就是地址,因此使用scanf()函數(shù)時(shí),不需要在它們前面加上&操作符。

  char *p,str[20];

  scanf(%s, p);

  scanf(%s, str);

  具體字符串,指針的知識(shí)以后再介紹。

  (c).可以在格式化字符串中的%各格式化規(guī)定符之間加入一個(gè)整數(shù),表示任何讀操作中的最大位數(shù)。

  如上例中若規(guī)定只能輸入10字符給字符串指針p,則第一條scanf()函數(shù)語(yǔ)句變?yōu)?

  scanf(%10s, p);

  程序運(yùn)行時(shí)一旦輸入字符個(gè)數(shù)大于10, p就不再繼續(xù)讀入。

  實(shí)際使用scanf()函數(shù)時(shí)存在一個(gè)問(wèn)題, 下面舉例進(jìn)行說(shuō)明:

  當(dāng)使用多個(gè)scanf()函數(shù)連續(xù)給多個(gè)字符變量輸入時(shí), 例如:

  char c1, c2;

  scanf(%c, &c1);

  scanf(%c, &c2);

  運(yùn)行該程序,輸入一個(gè)字符A后回車(chē)(要完成輸入必須回車(chē)),在執(zhí)行scanf(%c,&c1)時(shí),給變量c1賦值A(chǔ),但回車(chē)符仍然留在緩沖區(qū)內(nèi),執(zhí)行輸入語(yǔ)句scanf(%c,&c2)時(shí),變量c2輸出的是一空行,如果輸入AB后回車(chē),那么實(shí)際存入變量里的結(jié)果為c1為A,c2為B。

  要解決以上問(wèn)題, 可以在輸入函數(shù)前加入清除函數(shù)fflush();(這個(gè)函數(shù)的使用方法將在本節(jié)最后講述)。

  (d).當(dāng)在格式說(shuō)明符之間加入'*'時(shí),表示跳過(guò)輸入,例如:

  scanf(%3*d,&a);

  當(dāng)輸入12345的時(shí)候,前面三個(gè)字符跳過(guò)去不考慮,最終變量a的值為45。

  2.標(biāo)準(zhǔn)輸出語(yǔ)句

  printf()函數(shù)是格式化輸出函數(shù),一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。在編寫(xiě)程序時(shí)經(jīng)常會(huì)用到此函數(shù)。printf()函數(shù)的調(diào)用格式為:

  printf(<格式化字符串>, <參量表>);

  其中格式化字符串包括兩部分內(nèi)容:一部分是正常字符,

  這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以%開(kāi)始,后跟一個(gè)或幾個(gè)規(guī)定字符,用來(lái)確定輸出內(nèi)容格式。

  參量表是需要輸出的一系列參數(shù),其個(gè)數(shù)必須與格式化字符串所說(shuō)明的輸出參數(shù)個(gè)數(shù)一樣多,各參數(shù)之間用,分開(kāi),且順序一一對(duì)應(yīng),否則將會(huì)出現(xiàn)意想不到的錯(cuò)誤。

  對(duì)于輸出語(yǔ)句,還有兩個(gè)格式化說(shuō)明符

  符號(hào) 作用

  %e 指數(shù)形式的浮點(diǎn)數(shù)

  %g 自動(dòng)選擇合適的表示法

  說(shuō)明:

  (1).可以在%和字母之間插進(jìn)數(shù)字表示最大場(chǎng)寬。

  例如: %3d 表示輸出3位整型數(shù),不夠3位右對(duì)齊。

  %9.2f 表示輸出場(chǎng)寬為9的浮點(diǎn)數(shù),其中小數(shù)位為2,整數(shù)位為6,小數(shù)點(diǎn)占一位,不夠9位右對(duì)齊。

  %8s 表示輸出8個(gè)字符的字符串,不夠8個(gè)字符右對(duì)齊。

  如果字符串的長(zhǎng)度、或整型數(shù)位數(shù)超過(guò)說(shuō)明的場(chǎng)寬,將按其實(shí)際長(zhǎng)度輸出。但對(duì)浮點(diǎn)數(shù),若整數(shù)部分位數(shù)超過(guò)了說(shuō)明的整數(shù)位寬度,將按實(shí)際整數(shù)位輸出;若小數(shù)部分位數(shù)超過(guò)了說(shuō)明的小數(shù)位寬度,則按說(shuō)明的寬度以四舍五入輸出。

  另外,若想在輸出值前加一些0, 就應(yīng)在場(chǎng)寬項(xiàng)前加個(gè)0。

  例如: %04d 表示在輸出一個(gè)小于4位的數(shù)值時(shí),將在前面補(bǔ)0使其總寬度為4位。

  如果用浮點(diǎn)數(shù)表示字符或整型量的輸出格式,小數(shù)點(diǎn)后的數(shù)字代表最大寬度,小數(shù)點(diǎn)前的數(shù)字代表最小寬度。

  例如: %6.9s 表示顯示一個(gè)長(zhǎng)度不小于6且不大于9的字符串。若大于9,則第9個(gè)字符以后的內(nèi)容將被刪除。

  (2). 可以在%和字母之間加小寫(xiě)字母l,表示輸出的是長(zhǎng)型數(shù)。

  例如: %ld 表示輸出long整數(shù)

  %lf 表示輸出double浮點(diǎn)數(shù)

  (3). 可以控制輸出左對(duì)齊或右對(duì)齊,即在%和字母之間加入一個(gè)- 號(hào)可說(shuō)明輸出為左對(duì)齊,否則為右對(duì)齊。

  例如: %-7d 表示輸出7位整數(shù)左對(duì)齊

  %-10s 表示輸出10個(gè)字符左對(duì)齊

  一些特殊規(guī)定字符(可以參照前面說(shuō)的轉(zhuǎn)義字符)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━

  字符 作用

  ──────────────────────────

  \n 換行

  \f 清屏并換頁(yè)

  \r 回車(chē)

  \t Tab符

  \xhh 表示一個(gè)ASCII碼用16進(jìn)表示
猜你喜歡

1.比較詩(shī)意的情感句子

2.表達(dá)傷心比較有意義的句子

3.想表達(dá)合作成功的語(yǔ)句

4.c語(yǔ)言中邏輯或的用法

5.表達(dá)看淡一切的句子

6.表達(dá)奮斗的句子

7.五種常見(jiàn)表達(dá)句子間關(guān)系的詞匯

2938831