發布時間:2011-09-16 共2頁
一、表達式
前面已經提到過表達式,相信大家對表達式也有了一個初步的認識,它是由常量、變量、運算符組合(到以后講函數時,函數也可以是組成表達式的元素),計算以后返回一個結果值。表達式的結束標志是分號(;),C語言中所有的語句和聲明都是用分號結束,在分號出現之前,語句是不完整的。
例如:
1+2;
Counter/3+5;
Height*Width;
表達式本身什么事情都不做,只是返回結果值。在程序不對返回的結果值做任何操作的情況下,返回的結果值不起任何作用,表達式的作用有兩點,一個是放在賦值語句的右邊,另一個是作為函數的參數(以后再介紹)。
表達式返回的結果值是有類型的。表達式隱含的數據類型取決于組成表達式的變量和常量的類型。因此,表達式的返回值有可能是某種大小的整型,或者是某精度的浮點型,或者是某種指針類型。
這里面就有類型轉化的問題了,在前面說整型運算的時候也提到過。類型轉化的原則是從低級向高級自動轉化(除非人為的加以控制)。計算的轉換順序基本是這樣的:
字符型-->整型-->長整型-->浮點型-->單精度型-->雙精度型
就是當字符型和整型在一起運算時,結果為整型,如果整型和浮點型在一起運算,所得的結果就是浮點型,如果有雙精度型參與運算,那么答案就是雙精度型了。
強制轉換是這樣的,在類型說明符的兩邊加上括號,就把后面的變量轉換成所要的類型了。如:
(int) a;
(float) b;
第一個式子是把a轉換成整型,如果原先有小數部分,則舍去。
第二個式子是把b轉換成浮點型,如果原先是整數,則在后面補0。
每一個表達式的返回值都具有邏輯特性。如果返回值為非0,則該表達式返回值為真,否則為假。這種邏輯特性可以用在程序流程控制語句中。
有時表達式也不參加運算,如:
if(a||b) …………
5>3?a++:b++;
當a為真時,b就不參加運算了,因為不管b如何,條件總是真。
二、語句
(一)、賦值語句
其實這個問題,在講賦值運算符的時候已經講了一些了。
Amount=1+2;
Total=Counter/3+5;
Area=Height*Width;
也許你會發現,這些賦值語句很象代數方程,在某些情況下,我們的確可以這樣理解,但有時它們是不一樣的。看下面:
Num=Num+1;
這顯然不是一個等式。
(二)、用逗號分隔開的聲明語句
C語言可大多數語言一樣,允許用逗號分隔聲明語句中的標識符列表,說明這些運算符是同一變量類型。例如:
float Area,Height,Width;
但有些程序員喜歡把標識符寫在不同的行上。如:
float Area,
Height,
Width;
這樣寫至少有一個好處,就是可以在每個標識符后邊加上注釋。
在聲明變量的時候,也可以直接給變量賦值,這叫做變量的初始化。
如:int a;
a=3;
等價于:
int a=3;
我們也讓某些變量初始化,某些不初始化,如:
int a=3,b,c=5;
在進行初始化時,初始化表達式可以是任意的(對全局變量和靜態變量有區別),由于逗號運算符是從左到右運算的,那么看看這樣行不行?
int a=3,b=a,c=5;
(三)、標準輸入輸出語句
Turbo C 2.0標準庫提供了兩個控制臺格式化輸入、輸出函數scanf();和printf();這兩個函數可以在標準輸入輸出設備上以各種不同的格式讀寫數據。scanf() 函數用來從標準輸入設備(鍵盤)上讀數據,printf()函數用來向標準輸出設備(屏幕)寫數據。下面詳細介紹這兩個函數的用法。
1.標準輸入語句
scanf()函數是格式化輸入函數, 它從標準輸入設備(鍵盤) 讀取輸入的信息。其調用格式為:
scanf(<格式化字符串>, <地址表>);
格式化字符串包括以下三類不同的字符;
(1).空白字符:空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符。
(2).非空白字符:一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。
(3).格式化說明符:以%開始,后跟一個或幾個規定字符,用來確定輸出內容格式。
Turbo C 2.0提供的輸入格式化規定符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
符號 作用
──────────────────────────
%d 十進制有符號整數
%u 十進制無符號整數
%f 浮點數
%s 字符串
%c 單個字符
%p 指針的值
%x,%X 無符號以十六進制表示的整數
%o 無符號以八進制表示的整數
━━━━━━━━━━━━━━━━━━━━━━━━━━
地址表是需要讀入的所有變量的地址,而不是變量本身,取地址符為'&'。各個變量的地址之間同,分開。
例如:
scanf(%d,%d,&i,&j);
上例中的scanf()函數先讀一個整型數,然后把接著輸入的逗號剔除掉,最后讀入另一個整型數。如果,這一特定字符沒有找到,scanf()函數就終止。若參數之間的分隔符為空格,則參數之間必須輸入一個或多個空格。