版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 2 章 常數變數與資料型態在本章中 將 介紹 C 程式 資料型態 並 配合 常數 與 變數 的使用。 電腦有 8 位元、 16 位元、 32 位元 及 64 位元等 的限制, 又整數 與 浮點的 內部 結構 的不同, 其 算術 運算方式 也不相同, 因此 產生 資料型態 的區別。 資料 型態 的 轉換 基本上 都 需 加以 申明, 或 呼叫函數 做 轉換, 例如 字元 '9' 轉成 整數 9, 字元 指標 與 整數指標 的轉換, 有些 則 不需要 做明確的 標示, 如 整數 與 浮點 參雜 在一齊的 算術 運算。變數的 宣告 必須 表明 其 資料型態, 如此 一來 C 編譯
2、 程式 (compiler) 方能 安排 適當 大小的 記憶空間 給 該變數, 並 處理 適當的運算。本 章 主 要 內 容 如 下 :· 第 2.1 節 資料型態o 第 2.1.1 節 資料容量o 第 2.1.2 節 資料內部表示· 第 2.2 節 常數o 第 2.2.1 節 字元常數o 第 2.2.2 節 字串常數o 第 2.2.3 節 整數常數o 第 2.2.4 節 浮點常數o 第 2.2.5 節 符號常數· 第 2.3 節 變數· 第 2.4 節&
3、#160;運算子o 第 2.4.1 節 算術運算子o 第 2.4.2 節 關係運算子o 第 2.4.3 節 邏輯運算子o 第 2.4.4 節 位元運算子· 第 2.5 節 資料型態轉換回第 1 章至第 3 章回 C 程式主目錄第 2.1 節 資料型態C 的 資料型態 基本上 可分 為 二大類:1. 基本型態 (basic data types),2. 延伸性型態 (user-defined data types)。在本章中 我們 僅討論 基本 資料型態, 延伸性 型態 將於 第 7 章 討論。 C 的 基本 資料型態 有 char (
4、字元), int (整數), float (浮點), 與 double (倍準浮點)。 此外, 還有 一些 修飾詞 (qualifier), 如 unsigned、 short 及 long 可加在 基本 型態 之前,例如:unsignedcharc;shortinti, j;longintx, y;unsignedintpositive;longdoublearea;C 語言 基本上 是 沒有 布林 ( boolean ) 資料 型態, 但以 0 當做 "假",以 非 0 當做 "真"。第 2.1.1 節 資料容量資料型容量數值範圍輸入/出格式運算子c
5、har1 byte-128127%c+, -, *, /, %int2-3276832767%d, %x, %o, %u, %X+, -, *, /, %long4-21474836482147483647%ld, %lx, %lX, %lo, %lu+, -, *, /, %float43.4E-383.4E+38(7位有效)%f, %e, %E, %g, %G+, -, *, /double81.7E-3081.7E+308(15位)%lf, %le, %lg+, -, *, /第 2.1.2 節 資料內部表示char 佔有 8 個 位元, 即 位元 0、 位元 1、 . 位元 7。 位元
6、 7 為 0 時, 該數 為 正數, 否則 為 負數。int 佔有 16 個 位元, 即 位元 0、 位元 1、 . 位元 15。 位元 15 為 0 時, 該數 為 正數, 否則 為負數。float 佔有 32 個 位元, 即 位元 0、 位元 1、 . 位元 31。 位元 0 為 0 時, 該數 為 正數, 否則 為 負數。 位元 1 至 位元 8 表 指數 大小, 位元 9 至 位元 31 表 分數 大小。回本章主目錄第 2.2 節 常數C 的常數 有 字元常數、 字串常數、 整數常數、 浮點常數 等。第 2.2.1 節 字元常數字元常數
7、;基本上 有 三種 表示法:1. 一般 均在 字元 前 後 加上 單引號 ('), 如 'a'、 'A'、 '9'、 '+' 等。2. 一些 特殊 控制 字元, 如 跳行、 跳頁、 水平定位、 游標 歸位等 均 無法 在螢幕上 或 印表機 顯示 出來, 因此 使用 這些 字元時, 必須 用 倒斜線 (), 在其後a. 並 附加 一字元, 如 'n'、 'f'、 't'、 'r'b. 或 附加 三個 八進位 數, 如 '007' (鈴聲)、
8、39;101'(='A');c. 或 附加 x 及 兩個 十六進 位數, 如 'x61'(='a')。例如: char c; c = 'x61' printf("%cn%d", c, c);其輸出為: a 973. 我們 亦可 用 整數 0 至 255 來表 一字元 常數 或 用 整數 -128 至 127 來表 一字元 常數。 這會 牽扯到 變數的 宣告, 例如:4. unsigned char ch;5. char c;6.7. ch = 224; /* ch = -32 亦可 */8. c = -
9、32; /* c = 224 亦可 */9.10. printf("%c %d %c %d", ch, ch, c, c);其輸出為: 224 -32。在 字串中 (連續 兩個 雙引號 "." ) 就無法 使用 整數 0 至 255 來表 一字元 常數。 不然, 就要用 倒斜線 ()在 再加上 整數。第 2.2.2 節 字串常數字串 是 由 連續的 0 個 或 多個 字元 並 前後 各加上 一個 雙引號 (") 所構成, 如: "This is a string!", "這是一字串"
10、, "0123n0123tx61n"。第 2.2.3 節 整數常數整數常數基本上 有 三種 表示 方式:1. 十 進位: 由 0、 1、 . 9 所構成, 但 第一個 數 不可為 0。例如: -1、 231、 32767 等。2. 八 進位: 由 0、 1、 . 7 所構成, 第一 個數 必須 為 0。例如: -012 (即十進位 -10)、 0201 (即十進位 129) 等。3. 十六 進位: 由 0、 1、 . 9、 A、 B、 C、 D、 E、 F (或 a、 b、 c、 d、 e、 f) 所構成, 第一 個數 必須 為 0x 或 0X。例如: -0x12(= -1
11、8)、 0XA1(= 161) 等。例如: #define MAXSIZE 100 main() int i = 0xFF; printf("%o %#o %d %x %#x %X %#Xn",i,i,i,i,i,i,i); printf("%d %d %d %dn",MAXSIZE,-0x12,0XA1,32768); printf("%ld %ld ", 0xabcde, 0xabcdeL); printf("%#lx %lXn",0xabcde, 0xabcdeL); 其輸出為 377 0377 255 ff
12、 0xff FF 0XFF 100 -18 161 -32768 703710 703710 0xabcde ABCDE整數常數 的 資料 型態 有 兩種: int 與 long。 整數常數 為 long, 其後 要加上 字元 'l' 或 'L', 如 123456l、 32788L、 0xabcdeL (如 上例 所示)。第 2.2.4 節 浮點常數浮點常數 基本上 有 兩種 表示 方式:1. 十 進位: 如 -12.4、 3.1415926。2. 科學 符號: 如 2.34E+02、 0.34e-12。第 2.2.5 節 符號常數為了 容易 閱讀
13、及 修改 方便, 常數 經常 以 符號常數 來代替, 其 宣告 方式 通常是 在 檔案起頭 加上#define 常數名稱 常數在 程式中 就用 該常數 名稱, 例如: #define EOF -1 #define PI 3.1415926 #define e 2.718281828459045 #define EPSILON 0.000001 main() . area = PI * radius * radius; . while (c=getchar() != EOF ) . . . while ( abs( f(x) ) > EPSILON ) . . . 說明: C 編譯器在編譯
14、該程式時, 會先做前置處理, 即將 #define 中所定義的 名稱, 如 PI 和 EPSILON 以 3.1415926 及 0.000001 來代換, 之後 再加以編譯。回本章主目錄第 2.3 節 變數(variables)變數宣告語法:資料型態 變數名稱, 變數名稱;變數宣告處:(1) 在 一個 檔案 任何 函數 (包括 main) 之前,(2) 在 任一 括號 . 內的 起頭。例: char c ='0', C ='c', ch; int i, j, k, sum = 0; long verylong = 123
15、456789; float x, y, z, area = 0.0, radius; double total_area;回本章主目錄第 2.4 節 運算子運算子 可分為 算術 運算子、 關係 運算子、 及 邏輯 運算子。第 2.4.1 節 算術運算子算術 運算子 有 下列 六種, 按其 運算 優先 順序 說明 如下:優先順序算術運算子說明1-負號2*乘2/除2%餘數3+加3-減第 2.4.2 節 關係運算子關係運算子 有 下列 六種, 按 其 運算 優先 順序 說明 如下:優先順序關係運算子說明1>大於1<小於1>=大於等於1<=小於等於2=等於2!=不等於第 2.4
16、.3 節 邏輯運算子邏輯運算子 有 下列 三種, 按 其 運算 優先 順序 說明 如下:優先順序邏輯運算子說明1!非 (not)2&&且 (and)2|或 (or)第 2.4.4 節 位元運算子位元運算子 有 下列 幾種, 按 其 運算 優先 順序 說明 如下:優先順序位元運算子名稱說明11's complement將0改為1,將1改為02>>right shift將一組字元右移, 如果最左一個位元為1,則新的最左幾個位元填入1,若為unsigned,則新的最左位元填入02<<left shift將一組字元左移,新的最右位元填入03&a
17、mp;bitwise AND1&1為1,其餘的情況皆為04bitwise exclusive OR01與10皆為1,其餘的情況皆為05|bitwise OR0|0為0,其餘的情況皆為1假設 ch 為一字元變數,其值為 076,其八個位元的內容為 00111110。c 為一字元變數,其值為 0360,其八個位元的內容為 11110000。 則下列運算式及其結果以八個位元的內容表示如下:運算式結果ch11000001c>>211111100c<<310000000ch&c00110000chc11001110ch|c11111110回本章主目錄第 2.5 節
18、 資料型態轉換在做 資料型態 轉換時, 儘 可能 避免 將 長形 資料型態 轉成 短形, 例 如 將 long 轉成 int。 資料型態 轉換 基本上 有 四種 方式:1. 指派轉換、2. 算術轉換、3. 模式轉換 (cast) 及4. 函數轉換,其 說明 如下:1. 指派轉換: C 自動 將 指派值 轉成 等號 左邊 變數的 資料 型態,如:2. main()3. int i;4. long x = 100000, y=1000;5.6. i = x * y;7. printf("i =%dn", i);8. i = -1691154500L;9. printf(&quo
19、t;i =%dn", i);10. 其輸出為: i =-7936 i =1980說明: -1691154500L 的 二進位 表示式 為 1001101100110011 0000011110111100 <- 1980 ->其較低的 兩個 位元組 的值 為 1980, 因此 對於 指派 敘述i = -1691154500L;經 指派 轉換 後, 變數 i 的值 為 1980。11. 算術轉換: C 自動 先將 算術式中 不同 資料 型態值 轉成 相同 資料 型態,再做 算術 運算, 基本上 是 將 容量小的 轉成 容量大, 例如:12. int i = 2;13. float x, y;14.15. x = i * 9 / 8 + 32.0;16. y = i * 9 / 8.0 + 32.0;17. printf("%f %fn", x, y);其輸出為: 34.000000 34.250000說明:a. i * 9 / 8 中 每一項 皆 為 整數, 其值 為 2 * 9 / 8 = 3, 小數 部份的值 被刪除, 剩下 整數 部份。b. i * 9 / 8.0 中 有一項 為 浮點數 8.0, 因此, i 及 9 皆被化為 浮點數 2.0 及 9.0, 再做 浮點 算數運算, 其值 為 2.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年四川辅警协警招聘考试真题附答案详解(典型题)
- 2023年驻马店辅警协警招聘考试真题及一套完整答案详解
- 2023年酒泉辅警招聘考试真题完整答案详解
- 2023年鞍山辅警招聘考试真题附答案详解(培优a卷)
- 2023年遂宁辅警招聘考试真题附答案详解(黄金题型)
- 2024年上海辅警招聘考试题库及答案详解(夺冠)
- 2023年长治辅警协警招聘考试真题及答案详解(全优)
- 2024年大足县辅警协警招聘考试真题附答案详解(轻巧夺冠)
- 2024年合肥辅警协警招聘考试真题及一套参考答案详解
- 2024年保山辅警协警招聘考试真题及一套参考答案详解
- 二手人防车位使用权转让协议书
- Python数据分析与可视化(微课版) 课件 ch05 数据清理案例实战
- 规划验收手续流程
- 肠道肿瘤的诊断与治疗
- 2024年云天化集团招聘笔试参考题库含答案解析
- 医学检验技术专业大学生职业生涯规划书
- 学生宿舍管理服务方案介绍课件
- 网络流量调度与负载均衡解决方案
- 提高患者口服药服用的准确率品管圈成果汇报ppt模板
- 巴斯夫-吡唑醚菌酯(凯润)课件
- 医院处方管理办法实施细则
评论
0/150
提交评论