博硕文化出版发行_第1页
博硕文化出版发行_第2页
博硕文化出版发行_第3页
博硕文化出版发行_第4页
博硕文化出版发行_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、課前指引變數與常數主要是用來儲存程式中的資料,以提供程式中各種運算之用。兩者之間最大的差別在於變數的值是可以改變,而常數的值則固定不變。 章節大綱備註:可依進度點選小節 2-1 基本資料型態 2-2 變數 2-3 常數42-1 基本資料型態前言資料型態在程式語言中,包含兩個必備的層次 :可說明性及可執行性。在C中共有整數、浮點數及字元等三種基本資料型態。52-1 基本資料型態整數(integer)整數(int)在C中的儲存方式會保留4個位元組(32位元)的空間 整數表示方式可以是10進位、8進位或16進位。 int no=80; /* 十進位 */ int no=0120; /* 八進位 */

2、 int no=0 x50; /* 十六進位 */6範例CH02-01.c /* sizeof()函數的使用 */2-1 基本資料型態72-1 基本資料型態執行結果程式解說 第79行將三個宣告不同整數型態的變數no1、no2、no3,設定相同的初始值。82-1 基本資料型態修飾詞英文字母U、u與L、l可直接放在整數字面常數後標示其為無號(unsigned;無正負符號的整數)以及長整數(long)資料型態 45U、45u/標示45為無號整數45L、45l/標示45為長整數45UL、45UL/標示45為無號長整數92-1 基本資料型態整數資料型態(適用於一般的個人電腦)資料型態宣告資料長度(位元組

3、)最小值最大值short int2-3276832767signed short int2-3276832767unsigned short int2065535int4-21477836482147483647signed int4-21477836482147483647unsigned int404294967295long int4-21477836482147483647signed long int4-21477836482147483647unsigned long int404294967295102-1 基本資料型態範例:CH02-02.c /* 整數的溢位溢位(over f

4、loating)(over floating) */112-1 基本資料型態執行結果122-1 基本資料型態程式解說 第78行中分別設定s1與s2的值,並讓s1超過無號短整數的最小下限值,而讓s2超過短整數的最大上限值。當在第1112行輸出時,卻發現s1的值為65535,而s2的值為-32768。事實上,在C的整數溢位處理中,可看成是以一種循環的觀念來處理,當比最大表示值大1時,則變為最小表示值,如s2,當比最小表示值小1時,則變為最大表示值,如s1。 132-1 基本資料型態浮點數可以區分為單精度(float)和倍精度(double)兩種宣告類型。 float(單精度浮點數)的資料型態長度為

5、32個位元(4個位元組),其數值的精確位數最多儲存到第八位,如果數值的超過了,那麼系統不會儲存後續的數值。double(倍精度浮點數)的資料長度為64個位元(8個位元組),則其數值的精確位數最多儲存到第十五位。 142-1 基本資料型態浮點數數值範圍資料型態長度數值範圍float4 Byte1.2*10-383.4*10+38double8 Byte2.2*10-3081.8*10+308152-1 基本資料型態範例ch02_03.c /* 浮點數的準確位數 */162-1 基本資料型態執行結果172-1 基本資料型態程式解說 第79行我們刻意宣告了三個變數,其中f1、f2分別宣告為單精度浮點

6、數,其值設定為123.4568357109375F與21341372.1357912,而d1則宣告為倍精數浮點數,其值設定為123456789.123456789123。在第11行中,輸出123.456833共八位數,第12行中輸出21341372.000000,也是只保留八位數精確值。第13行輸出則可保留15位數,即是123456789.123457。 182-1 基本資料型態範例CH02-04.c /* 浮點數不應被拿來比較是否相等 */192-1 基本資料型態執行結果程式解說第8行中宣告f1=1e-25,而在第10行中我們利用if指令(這部份會在第五章中繼續說明)來判斷是否相等,由程式執

7、行結果中可知兩數並不相等,不過從數學的角度而言,卻是相同。因此通常我們在程式設計上會利用第1314行中,讓兩數相減的絕對值小於某有微小值來做近似相等的判斷。 202-1 基本資料型態範例CH02-05.c /* 兩種輸出格式之比較 */212-1 基本資料型態執行結果程式解說 第78行中我們宣告並設定單精度浮點數f1與f2的值。在第1011行中直接利用%e格式化字元輸出其科學記號表示法的值。請注意第11行的輸出結果,在第8行是設定f1=5467.1234,但為何輸出時f2=5467.1235335,主要因素就是因為儲存精確度的問題,而輸出時多出的位數,是保留在記憶體中的殘值。 222-1 基本

8、資料型態字元型態字元型態(char)包含了字母、數字、標點符號及控制符號等,每一個字元佔用1位元組(8位元)的資料長度,在記憶體中仍然是以整數數值的方式來儲存 當程式中要加入一個字元符號時,必須用單引號將資料括起來char ch=A /宣告ch為字元變數,並指定初值為Achar ch=65; /宣告ch為字元變數,並指定初值為65 232-1 基本資料型態範例CH02-06.c /* ASCII碼的換算 */242-1 基本資料型態執行結果程式解說第78行宣告兩個字元變數char1、char2。第12、17行則分別進行加法與減法運算。第13、18行則分別輸出運算的結果。 252-1 基本資料型

9、態Char數值範圍資料型態資料長度(位元)最小值最大值char8-128127signed char8-128127unsigned char80255262-1 基本資料型態範例CH02-07.c /* 字元與字串之比較 */272-1 基本資料型態執行結果程式解說 第78行分別宣告ch1與ch2變數,ch1是以單引號括住資料,而ch2則以雙引號括住資料。第10、12行輸出變數內的資料及所佔的位元組,兩者間的差異是字串多了一個空位元(0)。 282-1 基本資料型態字串宣告方式方式1:char 字串變數字串長度=初始字串;方式2:char 字串變數字串長度=字元1, 字元2, . ,字元n,

10、 0; 292-1 基本資料型態範例CH02-08.c /* 字串中的字元 */302-1 基本資料型態執行結果程式解說 第7行宣告一字串變數,並設值為World!,第8行則配合%s格式化字元輸出此字串。第1016行則逐一輸出此字串中的每個字元,但第16行則是輸出0,於螢幕中並無法顯示。 312-1 基本資料型態四種字串宣告方式char Str_16=Hello!;char Str_26= H, e, l, l, o, !, 0;char Str_3=Hello!;char Str_4= H, e, l, l, o, !, 0;322-1 基本資料型態範例CH02-09.c /* 字串的不同設

11、定方式 */332-1 基本資料型態執行結果程式解說 第810行是正統的字串宣告方式,而第11行的宣告僅是一種字元陣列,因為沒有結尾字元(0),不算是一種字串。在第17行輸出時,因無結尾字元,故輸出時出現奇怪的符號。342-1 基本資料型態常用跳脫字元跳脫字元說明十進位ASCII碼八進位ASCII碼十六進位ASCII碼0字串結束字元。(Null Character)000 x00a警告字元,使電腦發出嗶一聲(alarm)70070 x7b倒退字元(backspace),倒退一格80100 x8t水平跳格字元(horizontal Tab)90110 x9n換行字元(new line)10012

12、0 xAv垂直跳格字元(vertical Tab)110130 xBf跳頁字元(form feed)120140 xCr返回字元(carriage return)130150 xD顯示雙引號(double quote)340420 x22顯示單引號(single quote)390470 x27顯示反斜線(backslash)9201340 x5C352-1 基本資料型態範例CH02-10.c /* 輸出嗶聲 */362-1 基本資料型態執行結果程式解說 第710行是屬於跳脫字元的應用,都能讓電腦發出嗶的聲響,第13行則是以跳脫字元與16進位來設定WORLD! 字串。當程式執行到第15行時,會

13、輸出四聲嗶聲顯示字串st的內容值。 37範例CH02-11.c /* 輸出單引號與雙引號 */2-1 基本資料型態38執行結果程式解說 第6行將ch1中的值設定為跳脫序列,在第8行中則以%c輸出ch1的值,並且利用()在printf()函數中顯示出雙引號。 2-1 基本資料型態392-2 變數簡介前言變數型態:整數、浮點數或字元。變數名稱:變數本身在程式中的名字,必須符合識別字的命名規則及可讀性。值:程式中變數所賦予的值。參考位置或記憶體位址:變數在記憶體中儲存的位置。402-2 變數簡介變數的宣告由於變數本身的內容值是可以被改變,因此不同資料型態的變數,所使用的記憶體空間大小以及可表示的資料

14、範圍自然不同。至於在程式語言的領域中,有關變數儲存位址的方法則有兩種,分述如下: 就就412-2 變數簡介範例CH02-12.c /* 初始化與未初始化 */422-2 變數簡介執行結果 程式解說 第68行中宣告了三個變數,其中a變數並未設定初值。當從第10行中輸出a時,各位在螢幕上會發現a=2,如果您的電腦顯示的不是2,那也很正常,因為這個值是系統並未清除原先在那塊位址上的內容,所出現先前存放的數字。432-2 變數簡介變數的生命週期與可視範圍全域變數(Global variable)宣告在程式區塊與函數之外,且在宣告指令以下的所有函數及程式區塊都可以使用到該變數。通常全域變數是用來定義一些

15、常數,但是初學者不應為了方便而將所有的變數都設定為全域變數,否則將來一定會發生變數名稱管理上的問題。全域變數的生命週期始於程式開始之時,終止於程式結束之後: float pi=3.14; /* pi是全域變數 */int main() 442-2 變數簡介變數的生命週期與可視範圍區域變數 是指宣告在函數之內的變數。它的可視範圍只在宣告的函數區塊之中,其它的函數不可以使用該變數。區域變數的生命週期開始於函數被呼叫之後,終止於函數執行完畢之時。void circle() float pi=3.14; /* pi是circle()函數中的區域變數 */int main() 452-2 變數簡介變數的

16、生命週期與可視範圍區塊變數是指宣告在某個程式區塊之中的變數,也是屬於區域變數的一種。在某些程式碼區塊中所宣告的變數其有效範圍僅在此程式碼區塊中,此程式碼區塊以外的程式碼都不能參考此變數: /*在此區塊中宣告一個變數sum,其有效範圍為此程式區塊範圍*/ int sum ; . 462-2 變數簡介範例CH02-13.c /*全域變數與區塊變數*/472-2 變數簡介執行結果程式解說 第4行宣告salary為全域變數,在整個程式的任何位置的指令都可以合法使用該變數。第9行將輸出全域變數salary的值。第11行在此宣告salary為區塊變數,因此第12行所輸出的是區塊變數salary的值。但在第

17、14行時,因為離開了程式區塊,所以又將輸出全域變數salary的值。 482-2 變數簡介變數資料型態轉換針對變數執行上的要求,可以暫時性轉換資料型態的方式。基本上,資料型態轉換只是針對變數儲存的資料作轉換,但是不能轉換變數本身的資料型態。要在運算式中強制的轉換資料型態,可以使用如下的語法: (資料型態) 變數名稱; 492-2 變數簡介範例CH02-14.c /*資料型態的強制轉換*/502-2 變數簡介執行結果程式解說 第78行宣告整數與浮點數變數,並在第10-11行中進行整數強制型態轉換,請注意!這個包含型態名稱的小括號,可絕對不能省略。當第13行輸出時,我們發現no1與no2的值是f1

18、與f2的整數值,而且f1與f2的值並沒有受到任何影響。 512-3 常數前言常數則在程式執行時會固定不變。例如10、-568、0、5000等是整數常數,而3.1416、0.001、82.51等則是屬於浮點數常數,如果是字元常數時,常數值必須以單引號 括住字元,例如:a、c。當資料型態為字串時,必須以雙引號“ ”括住字串。522-3 常數常數識別字方式1:#define 常數名稱 常數值 利用巨集指令#define來宣告。所謂巨集(macro),又稱為替代指令,主要功能是以簡單的名稱取代取代某些特定的常數、字串或函數,善用巨集可以節省不少程式開發的時間。由於#define為一巨集指令,並不是指定敘述,因此不用加上=與;。例如以下定義常數方式: #define PI 3.14159 532-3 常數範例CH02-15.c /* 巨集指令 #define 之使用 */542-3 常數執行結果程式解說 第9行是使用#define來宣告PI為3.14159,自宣告以後,程式中所有出現PI的部份,都是代表3.14159的常數值,當指令結束時,也不用加上;號。第11行則是計算圓面積的公式。 552-3 常數常數

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论