《面向?qū)ο蟮某绦蛟O(shè)計(jì)語言-C》課件-第2章
《《面向?qū)ο蟮某绦蛟O(shè)計(jì)語言-C》課件-第2章》由會(huì)員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟮某绦蛟O(shè)計(jì)語言-C》課件-第2章(284頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、返 回 1 第 2章 C+語 言 基 礎(chǔ) 本 章 是 學(xué) 習(xí) C+語 言 的 基 礎(chǔ) , 包 括 以 下 幾 個(gè) 方 面 :1 結(jié) 構(gòu) 化 程 序 設(shè) 計(jì) 方 法 與 面 向 對 象 程 序 設(shè) 計(jì) 方 法 的 各 自 特 點(diǎn) 、區(qū) 別 和 相 互 聯(lián) 系 。2 面 向 對 象 的 程 序 設(shè) 計(jì) 方 法 中 的 有 關(guān) 概 念 , 如 類 、 對 象 、 封裝 、 繼 承 、 消 息 和 多 態(tài) 性 等 。3 C+程 序 的 基 本 組 成 和 框 架 結(jié) 構(gòu) 。4 掌 握 C+語 言 中 的 基 本 數(shù) 據(jù) 類 型 、 各 種 運(yùn) 算 符 、 表 達(dá) 式 。5 C+數(shù) 據(jù) 輸 入 流 對
2、象 cin和 輸 出 流 對 象 cout的 使 用 。6 程 序 的 3種 基 本 結(jié) 構(gòu)7 構(gòu) 造 數(shù) 據(jù) 類 型 , 如 數(shù) 組 、 結(jié) 構(gòu) 體 、 指 針 等 的 定 義 方 法 、 特點(diǎn) 和 使 用 方 法 。7 函 數(shù) 的 定 義 、 調(diào) 用 及 函 數(shù) 調(diào) 用 過 程 中 的 參 數(shù) 傳 遞 的 機(jī) 理 和程 序 執(zhí) 行 流 程 。8 引 用 的 概 念 及 其 定 義 和 使 用 方 法 。 返 回 2 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 2.1.1 傳 統(tǒng) 的 結(jié) 構(gòu) 化 程 序 設(shè) 計(jì) ( Structured Progr
3、amming-SP) 方 法 1 使 用 SP方 法 設(shè) 計(jì) 程 序 的 步 驟 在 數(shù) 據(jù) 處 理 過 程 中 , 采 用 的 是 自 頂 向 下 、 分 而 治 之 的方 法 , 將 整 個(gè) 程 序 按 功 能 劃 分 為 幾 個(gè) 可 獨(dú) 立 編 程 的 子過 程 模 塊 , 每 一 子 模 塊 完 成 指 定 的 子 任 務(wù) , 并 且 提 供一 個(gè) 清 晰 、 嚴(yán) 格 的 調(diào) 用 界 面 , 主 過 程 通 過 調(diào) 用 各 子 過程 完 來 成 全 部 處 理 工 作 。數(shù) 據(jù) 聲 明 數(shù) 據(jù) 處 理 結(jié) 果 輸 出 返 回 32 SP方 法 的 特 點(diǎn)優(yōu) 點(diǎn) :( 1) 這 種 程
4、序 設(shè) 計(jì) 方 法 力 求 算 法 描 述 準(zhǔn) 確 。( 2) 對 每 一 子 過 程 模 塊 容 易 進(jìn) 行 程 序 正 確 性 證 明 。缺 點(diǎn) :( 1) 這 種 程 序 設(shè) 計(jì) 方 法 本 質(zhì) 上 是 面 向 “ 過 程 ” 的 , 而“ 過 程 ” 和 “ 操 作 ” 又 是 不 穩(wěn) 定 和 多 變 的 , 因 此 不 能直 接 反 映 人 類 求 解 問 題 的 思 路 。( 2) 程 序 代 碼 可 重 用 性 差 。 程 序 中 除 少 數(shù) 標(biāo) 準(zhǔn) 庫 函 數(shù) 外 ,每 設(shè) 計(jì) 一 個(gè) 程 序 時(shí) , 程 序 員 幾 乎 從 零 做 起 。 即 使 重 用代 碼 , 通 常 也
5、 是 通 過 拷 貝 或 編 輯 重 新 生 成 一 份 。( 3) 維 護(hù) 程 序 的 一 致 性 困 難 。 該 種 方 法 將 數(shù) 據(jù) 與 對 數(shù) 據(jù)進(jìn) 行 處 理 的 程 序 代 碼 分 離 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 返 回 42.1.2 面 向 對 象 的 程 序 設(shè) 計(jì) ( Object-Oriented Programming -OOP) 方 法 1. 面 向 對 象 的 有 關(guān) 概 念 面 向 對 象 的 程 序 設(shè) 計(jì) 方 法 強(qiáng) 調(diào) 直 接 以 問 題 域 ( 現(xiàn) 實(shí) 世界 ) 中 的 事 物 為 中 心 來
6、 思 考 和 認(rèn) 識(shí) 問 題 , 并 按 照 這 些事 物 的 本 質(zhì) 特 征 把 它 們 抽 象 為 對 象 , 以 作 為 構(gòu) 成 軟 件系 統(tǒng) 的 基 礎(chǔ) 。( 1) 對 象 ( Object) : 每 個(gè) 對 象 都 具 有 屬 性( Attribute) 和 方 法 ( Method) 這 兩 方 面 的 特 征 。 對象 的 屬 性 描 述 了 對 象 的 狀 態(tài) 和 特 征 , 對 象 的 方 法 說 明了 對 象 的 行 為 和 功 能 , 并 且 對 象 的 屬 性 值 只 應(yīng) 由 這 個(gè)對 象 的 方 法 來 讀 取 和 修 改 , 兩 者 結(jié) 合 在 一 起 就 構(gòu) 成
7、了對 象 的 完 整 描 述 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 返 回 5( 2) 類 ( Class) : 具 有 相 似 屬 性 和 行 為 的 一 組 對 象 ,就 稱 為 類 。 可 見 , 有 了 類 的 概 念 以 后 , 就 可 以 對 具 有共 同 特 征 的 事 物 進(jìn) 行 統(tǒng) 一 描 述 。 ( 3) 封 裝 ( Encapsulation) : 封 裝 把 對 象 的 屬 性 和 方法 看 成 了 一 個(gè) 密 不 可 分 的 整 體 , 從 而 使 對 象 能 夠 完 整地 描 述 并 對 應(yīng) 于 一 個(gè) 具 體
8、事 物 。( 4) 繼 承 ( Inheritance) : 將 客 觀 事 物 進(jìn) 行 歸 類 是 一個(gè) 逐 步 抽 象 的 過 程 , 反 之 , 將 類 進(jìn) 行 層 層 分 類 便 是 一個(gè) 概 念 逐 漸 細(xì) 化 的 過 程 。在 面 向 對 象 的 程 序 設(shè) 計(jì) 中 , 允 許 在 已 有 類 的 基 礎(chǔ) 上 通 過增 加 新 特 征 而 派 生 出 新 的 類 , 這 稱 為 繼 承 。 其 原 有 的類 稱 為 基 類 ( base class) , 而 新 建 立 的 類 稱 為 派 生類 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè)
9、 計(jì) 返 回 6( 5) 消 息 ( Message) : 在 面 向 對 象 的 程 序 設(shè) 計(jì) 中 , 由于 對 象 描 述 了 客 觀 實(shí) 體 , 它 們 之 間 的 聯(lián) 系 通 過 對 象 間的 聯(lián) 系 來 反 映 。 當(dāng) 一 個(gè) 對 象 需 要 另 外 一 個(gè) 對 象 提 供 服務(wù) 時(shí) , 它 向 對 方 發(fā) 出 一 個(gè) 服 務(wù) 請 求 , 而 收 到 請 求 的 對象 會(huì) 響 應(yīng) 這 個(gè) 請 求 并 完 成 指 定 的 服 務(wù) 。 這 種 向 對 象 發(fā)出 的 服 務(wù) 請 求 就 稱 為 消 息 。( 6) 多 態(tài) 性 ( Polymorphism) : 多 態(tài) 性 是 面 向 對
10、 象 的 另一 重 要 特 征 。 在 通 過 繼 承 而 派 生 出 的 一 系 列 類 中 , 可能 存 在 一 些 名 稱 相 同 , 但 實(shí) 現(xiàn) 過 程 和 功 能 不 同 的 方 法( Method) 。 所 謂 多 態(tài) 性 是 指 當(dāng) 程 序 中 的 其 他 部 分 發(fā) 出 同 樣 的 消 息時(shí) , 按 照 接 收 消 息 對 象 的 不 同 能 夠 自 動(dòng) 執(zhí) 行 類 中 相 應(yīng)的 方 法 。 其 好 處 是 , 用 戶 不 必 知 道 某 個(gè) 對 象 所 屬 的 類就 可 以 執(zhí) 行 多 態(tài) 行 為 , 從 而 為 程 序 設(shè) 計(jì) 帶 來 更 大 方 便 。 2.1 從 面 向
11、 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 返 回 72. 面 向 對 象 的 程 序 設(shè) 計(jì) 方 法 ( OOP方 法 ) 這 種 方 法 將 設(shè) 計(jì) 目 標(biāo) 從 模 擬 現(xiàn) 實(shí) 世 界 的 行 為 轉(zhuǎn) 向 了 模擬 現(xiàn) 實(shí) 世 界 中 存 在 的 對 象 及 其 各 自 的 行 為 。 在 OOP中 , 將 “ 對 象 ” 作 為 系 統(tǒng) 中 最 基 本 的 運(yùn) 行 實(shí) 體 ,整 個(gè) 程 序 即 由 各 種 不 同 類 型 的 對 象 組 成 , 各 對 象 既 是一 個(gè) 獨(dú) 立 的 實(shí) 體 , 又 可 通 過 消 息 相 互 作 用 , 對 象 中 的方 法 決
12、 定 要 向 哪 個(gè) 對 象 發(fā) 消 息 、 發(fā) 什 么 消 息 以 及 收 到消 息 時(shí) 如 何 進(jìn) 行 處 理 等 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 方 法數(shù) 據(jù) 消 息消 息 返 回 83 OOP方 法 的 特 點(diǎn)( 1) OOP以 “ 對 象 ” 或 “ 數(shù) 據(jù) ” 為 中 心 。 由 于 對 象 自 然 地 反 映 了 應(yīng)用 領(lǐng) 域 的 模 塊 性 , 因 此 具 有 相 對 穩(wěn) 定 性 , 可 以 被 用 作 一 個(gè) 組 件 去構(gòu) 成 更 復(fù) 雜 的 應(yīng) 用 , 又 由 于 對 象 一 般 封 裝 的 是 某 一 實(shí) 際 需
13、 求 的 各種 成 分 , 因 此 , 某 一 對 象 的 改 變 對 整 個(gè) 系 統(tǒng) 幾 乎 沒 有 影 響 。( 2) 引 入 了 “ 類 ” ( class) 的 概 念 。 類 與 類 以 層 次 結(jié) 構(gòu) 組 織 , 屬于 某 個(gè) 類 的 對 象 除 具 有 該 類 所 描 述 的 特 性 外 , 還 具 有 層 次 結(jié) 構(gòu) 中該 類 上 層 所 有 類 描 述 的 全 部 性 質(zhì) , OOP中 稱 這 種 機(jī) 制 為 繼 承 。( 3) OOP方 法 的 模 塊 性 與 繼 承 性 , 保 證 了 新 的 應(yīng) 用 程 序 設(shè) 計(jì) 可 在 原有 對 象 的 數(shù) 據(jù) 類 型 和 功 能
14、的 基 礎(chǔ) 上 通 過 重 用 、 擴(kuò) 展 和 細(xì) 化 來 進(jìn) 行 ,而 不 必 從 頭 做 起 或 復(fù) 制 原 有 代 碼 , 這 樣 , 大 大 減 少 了 重 新 編 寫 新代 碼 的 工 作 量 , 同 時(shí) 降 低 了 程 序 設(shè) 計(jì) 過 程 中 出 錯(cuò) 的 可 能 性 , 達(dá) 到了 事 半 功 倍 的 效 果 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 返 回 92.1.3 面 向 對 象 的 程 序 設(shè) 計(jì) 方 法 與 結(jié) 構(gòu) 化 程 序 設(shè) 計(jì) 方 法的 比 較( 1) 傳 統(tǒng) 的 結(jié) 構(gòu) 化 程 序 設(shè) 計(jì) 方 法 以 過 程 為
15、 中 心 構(gòu) 造 應(yīng) 用程 序 , 數(shù) 據(jù) 和 處 理 數(shù) 據(jù) 的 過 程 代 碼 是 分 離 的 、 相 互 獨(dú)立 的 實(shí) 體 , 設(shè) 計(jì) 出 的 程 序 可 重 用 代 碼 少 , 且 當(dāng) 代 碼 量增 加 時(shí) 維 護(hù) 數(shù) 據(jù) 和 代 碼 的 一 致 性 困 難 。( 2) 面 向 對 象 程 序 設(shè) 計(jì) 方 法 中 , 對 象 所 具 有 的 封 裝 性 和繼 承 性 使 得 代 碼 重 用 成 為 可 能 , 并 大 大 減 少 了 程 序 出錯(cuò) 的 可 能 性 。( 3) 面 向 對 象 方 法 吸 收 了 結(jié) 構(gòu) 化 程 序 設(shè) 計(jì) 方 法 的 優(yōu) 點(diǎn) ,同 時(shí) 引 入 了 新 概
16、 念 、 新 機(jī) 制 并 建 立 了 比 傳 統(tǒng) 方 法 更 高層 次 的 抽 象 。 2.1 從 面 向 過 程 的 程 序 設(shè) 計(jì) 到 面 向 對 象 的 程 序 設(shè) 計(jì) 返 回 102.2.1 從 C語 言 到 C+語 言 C語 言 以 其 如 下 獨(dú) 有 的 特 點(diǎn) 風(fēng) 靡 了 全 世 界 :( 1) 語 言 簡 潔 、 緊 湊 , 使 用 方 便 、 靈 活 。 C語 言 只 有 32個(gè) 關(guān) 鍵 字 , 程 序 書 寫 形 式 自 由 。( 2) 豐 富 的 運(yùn) 算 符 和 數(shù) 據(jù) 類 型 。( 3) 可 以 直 接 訪 問 內(nèi) 存 地 址 , 能 進(jìn) 行 位 操 作 , 使 其 能
17、 夠勝 任 開 發(fā) 操 作 系 統(tǒng) 的 工 作 。( 4) 生 成 的 目 標(biāo) 代 碼 質(zhì) 量 高 , 程 序 運(yùn) 行 效 率 高 。( 5) 可 移 植 性 好 。 2.2 C+程 序 的 基 本 組 成 返 回 11 2.2 C+程 序 的 基 本 組 成 局 限 性 :( 1) 數(shù) 據(jù) 類 型 檢 查 機(jī) 制 相 對 較 弱 , 這 使 得 程 序 中 的 一 些錯(cuò) 誤 不 能 在 編 譯 階 段 被 發(fā) 現(xiàn) 。( 2) C本 身 幾 乎 沒 有 支 持 代 碼 重 用 的 語 言 結(jié) 構(gòu) , 因 此 一 個(gè)程 序 員 精 心 設(shè) 計(jì) 的 程 序 , 很 難 為 其 它 程 序 所 用
18、。( 3) 當(dāng) 程 序 的 規(guī) 模 達(dá) 到 一 定 程 度 時(shí) , 程 序 員 很 難 控 制 程序 的 復(fù) 雜 性 。 返 回 12 2.2 C+程 序 的 基 本 組 成C+包 含 了 整 個(gè) C, C是 建 立 C+的 基 礎(chǔ) 。 C+包 括 C的 全 部特 征 和 優(yōu) 點(diǎn) , 同 時(shí) 添 加 了 對 面 向 對 象 編 程 ( OOP) 的 完 全支 持 。1980年 , 貝 爾 實(shí) 驗(yàn) 室 的 Bjarne Stroustrup開 始 對 C進(jìn) 行改 進(jìn) 和 擴(kuò) 充 。1983年 正 式 命 名 為 C+。在 經(jīng) 歷 了 3次 C+修 訂 后 , 1994年 制 定 了 ANSI C
19、+ 標(biāo) 準(zhǔn) 的草 案 。 以 后 又 經(jīng) 過 不 斷 完 善 , 成 為 目 前 的 C+。C+仍 在 不 斷 發(fā) 展 中 。 美 國 微 軟 公 司 現(xiàn) 已 準(zhǔn) 備 推 出 C#( C Sharp) 語 言 , 來 代 替 C+語 言 。 返 回 132.2.2 C+程 序 的 結(jié) 構(gòu) 與 基 本 組 成 一 個(gè) 簡 單 的 C+程 序 , 是 由 若 干 個(gè) 函 數(shù) 構(gòu) 成 的 , 其 中 有且 僅 有 一 個(gè) 名 稱 為 main的 函 數(shù) 存 在 , 下 圖 說 明 了 C+程 序的 基 本 框 架 結(jié) 構(gòu) : 2.2 C+程 序 的 基 本 組 成聲明 區(qū) #include:函 數(shù)
20、聲 明定 義 全 局 變 量 主程序區(qū) 類 型 main(參 數(shù) 行 ) 程 序 主 體 ; 函數(shù)定義區(qū) 函 數(shù) 定 義 函 數(shù) 主 體 ; 返 回 141 聲 明 區(qū) 聲 明 區(qū) 處 在 程 序 文 件 的 所 有 函 數(shù) 的 外 部 。( 1) 包 含 頭 文 件 : 如 #include iostream.h( 2) 宏 定 義 : 如 #define PI 3.1415926( 3) 類 定 義 : 如 class name ;( 4) 結(jié) 構(gòu) 體 定 義 : 如 struct record ;( 5) 函 數(shù) 聲 明 : 如 void print();( 6) 全 局 變 量 聲 明
21、 : 如 float H=2.58;( 7) 條 件 編 譯 : 如 #ifdef 等 。 2.2 C+程 序 的 基 本 組 成 返 回 152 主 程 序 區(qū)主 程 序 以 main()函 數(shù) 開 始 , 是 整 個(gè) 程 序 運(yùn) 行 的 入 口 , 該 函數(shù) 中 可 能 包 含 的 內(nèi) 容 主 要 有 :( 1) 局 部 變 量 的 聲 明 : 如 : int i=1;( 2) 函 數(shù) 調(diào) 用 : 如 : y=sin(x);( 3) 一 般 運(yùn) 算 : 如 : a=b+c+d/3;( 4) 結(jié) 構(gòu) 控 制 : 如 : if(ab) c=a;( 5) 對 象 與 結(jié) 構(gòu) 的 處 理 。( 6
22、) 文 件 的 處 理 等 。 2.2 C+程 序 的 基 本 組 成 返 回 16圖 2.3 C+函 數(shù) 的 組 成 4 程 序 舉 例 2.2 C+程 序 的 基 本 組 成函數(shù)定義區(qū) 函 數(shù) 說 明 int max(int a,int b)函 數(shù) 體 int c;c=a+b;return(c);3 函 數(shù) 定 義 區(qū) 程 序 中 除 了 main函 數(shù) 之 外 , 還 可 以 包 含 其 它 的 函 數(shù) ,每 個(gè) 函 數(shù) 是 由 函 數(shù) 說 明 和 函 數(shù) 體 兩 部 分 構(gòu) 成 的 。 如 圖 2.3所 示 : 返 回 17 2.2 C+程 序 的 基 本 組 成聲明區(qū) #includ
23、e iostream.h#include stdio.hvoid print(); /函 數(shù) 聲 明主程序區(qū) void main() int i;char s80;print( );couts;couti;couts is i years old.;函數(shù) 定義區(qū) void print( )printf(printf is also can be usedn); 返 回 18上 例 程 序 結(jié) 構(gòu) 可 寫 為 如 下 程 序 :【 例 2-1】 一 個(gè) 簡 單 的 C+程 序 。/ This is first C+ program/* C語 言 的 某 些 特 征 仍 可 沿 用 */#incl
24、ude iostream.h#include stdio.hvoid print(); /函 數(shù) 聲 明void main() int i; char s80; 2.2 C+程 序 的 基 本 組 成 返 回 19 print( );couts;couti;/驗(yàn) 證 結(jié) 果couts is i years old.;void print( ) printf(printf is also can be usedn); 2.2 C+程 序 的 基 本 組 成 返 回 20從 上 例 可 以 看 出 :( 1) C語 言 中 原 有 的 規(guī) 則 和 語 句 在 C+中 仍 可 繼 續(xù) 使 用 ,但
25、C+又 增 添 了 很 多 新 的 風(fēng) 格 。( 2) 一 個(gè) C+的 程 序 是 由 一 到 若 干 個(gè) 函 數(shù) 構(gòu) 成 的 , 但 其中 必 須 有 且 僅 有 一 個(gè) 名 稱 為 main的 函 數(shù) 存 在 。( 3) 不 管 一 個(gè) 程 序 中 有 多 個(gè) 函 數(shù) , 只 有 main函 數(shù) 整 個(gè) 程序 運(yùn) 行 時(shí) 的 入 口 , 程 序 運(yùn) 行 時(shí) 從 此 函 數(shù) 開 始 執(zhí) 行 。 但 在程 序 中 , main函 數(shù) 所 處 的 位 置 可 以 任 意 。( 4) 一 個(gè) C+的 函 數(shù) 是 由 兩 部 分 構(gòu) 成 的 , 即 函 數(shù) 的 說 明部 分 和 函 數(shù) 體 , 函
26、數(shù) 的 說 明 部 分 包 括 了 函 數(shù) 的 返 回 值 的類 型 、 函 數(shù) 的 名 稱 、 圓 括 號 、 形 參 及 形 參 的 類 型 說 明 。函 數(shù) 體 由 一 對 大 括 號 括 起 來 , 其 內(nèi) 容 是 由 若 干 條 語 句 2.2 C+程 序 的 基 本 組 成 返 回 21構(gòu) 成 , 函 數(shù) 體 的 內(nèi) 容 決 定 了 該 函 數(shù) 的 功 能 。( 5) C+對 程 序 中 的 名 稱 是 大 小 寫 “ 敏 感 ” 的 , 除 特 殊情 況 下 , 應(yīng) 一 律 小 寫 。( 6) 程 序 中 的 注 釋 : 可 以 用 /*/或 /( 單 行 注釋 ) 對 程 序
27、中 的 內(nèi) 容 進(jìn) 行 注 釋 。 二 者 的 區(qū) 別 在 于 ,采 用/*/方 法 時(shí) ,注 釋 可 以 寫 成 多 行 ,而 采 用 /方 法時(shí) ,注 釋 只 能 寫 成 一 行 ,它 可 單 獨(dú) 占 一 行 ,也 可 寫 在 某 行 程序 代 碼 的 末 尾 。( 7) 數(shù) 據(jù) 輸 出 : 除 了 使 用 printf( )函 數(shù) , 還 可 使 用 功 能 更強(qiáng) 大 、 更 方 便 的 cout對 象 進(jìn) 行 輸 出 數(shù) 據(jù) 。 格 式 如 下 :cout數(shù) 據(jù) 1 數(shù) 據(jù) 2 數(shù) 據(jù) n 如 : 上 例 中 的 語 句 couts“ is ”i變 量 1變 量 2變 量 n如 : 上
28、 例 中 的 語 句 cins;表 示 給 變 量 s輸 入 一 個(gè) 值(9) 在 分 別 使 用 cout和 cin進(jìn) 行 數(shù) 據(jù) 的 輸 出 和 輸 入 時(shí) ,需 要 在 程 序 的 開 頭 嵌 入 ” iostream.h” 文 件 。 在 該 頭文 件 中 定 義 了 輸 入 輸 出 流 對 象 cout和 cin等 。(10) 一 個(gè) C+的 源 程 序 文 件 在 存 盤 時(shí) , 要 以 .CPP為 文件 名 后 綴 , 而 不 是 .C。 2.2 C+程 序 的 基 本 組 成 返 回 23 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式2.3.1 數(shù) 據(jù) 類 型(
29、1) 預(yù) 定 義 數(shù) 據(jù) 類 型 ( 基 本 數(shù) 據(jù) 類 型 ) 。 包 括 字 符 型 、整 型 、 浮 點(diǎn) 型 、 無 值 型 四 種 , 其 中 浮 點(diǎn) 型 又 分 為 單 精度 浮 點(diǎn) 型 和 雙 精 度 浮 點(diǎn) 型 兩 種 。( 2) 構(gòu) 造 數(shù) 據(jù) 類 型 , 包 括 數(shù) 組 、 結(jié) 構(gòu) 體 、 共 用 體 ( 聯(lián)合 ) 、 枚 舉 、 類 等 。 本 節(jié) 重 點(diǎn) 介 紹 C+的 基 本 數(shù) 據(jù) 類 型 , 有 關(guān) 構(gòu) 造 數(shù) 據(jù)類 型 將 在 后 面 章 節(jié) 進(jìn) 行 介 紹 。 返 回 242.3.1.1 基 本 數(shù) 據(jù) 類 型 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表
30、 達(dá) 式數(shù) 據(jù) 類 型 關(guān) 鍵 字 字 節(jié) 數(shù) 數(shù) 值 范 圍字 符 型 char 1 -128 127整 型 int 4 -2147483648 2147483647單 精 度 浮 點(diǎn) 型 float 4 (3.4E-38 3.4E38)雙 精 度 符 點(diǎn) 型 double 8 (1.7E-308 1.7E308無 值 型 void 0 valueless 返 回 252.3.1.2 類型修飾符C+還允許在基本數(shù)據(jù)類型(除void類型外)前加上類型修飾符,來更具體地表示數(shù)據(jù)類型。C+的類型修飾符包括: signed 有 符 號unsigned 無 符 號short 短 型long 長 型 2
31、.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 26 數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 字 節(jié) 數(shù) 數(shù) 值 范 圍 常 量 寫 法 舉 例Char 1 -128 127 A, 0,nsigned char 1 -128 127 56unsigned char 1 0 255 100short int 2 -32768 32767 100signed short int 2 -32768 32767 -3456unsigned short int 2 0 65535 0 xffint 4 -2147483648 2147483647 1000signed int 4 -2147483
32、6482147483647 -123456unsigned int 4 0 4294967295 0 xffff 表 2.2 C+的 基 本 數(shù) 據(jù) 類 型 返 回 27數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 字 節(jié) 數(shù) 數(shù) 值 范 圍 常 量 寫 法 舉 例long int 4 -2147483648 2147483647 -123456signed long int 4 -2147483648 2147483647 -3246unsigned long int 4 0 4294967295 123456float 4 (3.4E-38 3.4E38) 2.35, -53.231,3E-2 Double
33、 8 ( 1 . 7 E - 3 0 8 1.7E308) 12.354,-2.5E10long double 10 (1.2E-49321.2E4932) 8.5E-300 表 2.2 C+的 基 本 數(shù) 據(jù) 類 型 返 回 28說 明 :( 1) 表 中 帶 的 部 分 表 示 是 可 以 省 略 的 , 如 short int可以 寫 為 short int 或 簡 寫 為 short, 二 者 的 含 義 是 相 同 的 。( 2) 四 種 修 飾 符 都 可 以 用 來 修 飾 整 型 和 字 符 型 。 用 signed修 飾 的 類 型 的 值 可 以 為 正 數(shù) 或 負(fù) 數(shù) ,
34、 用 unsigned修 飾 的 類型 的 值 只 能 為 正 數(shù) 。( 3) 用 short修 飾 的 類 型 , 其 值 一 定 不 大 于 對 應(yīng) 的 整 數(shù) ,用 long修 飾 的 類 型 , 其 值 一 定 不 小 于 對 應(yīng) 的 整 數(shù) 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 29 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式2.3.1.3 常 量 在 C+語 言 中 , 數(shù) 據(jù) 分 為 常 量 和 變 量 兩 大 類 。 由 于 程 序 中 的 數(shù) 據(jù) 是 有 類 型 的 , 所 以 常 量 和 變量 都 是 有 類 型 之 分 的
35、 。 。 常 量 按 照 不 同 的 數(shù) 據(jù) 類 型 可 以 分 為 : 字 符 型 常量 、 整 型 常 量 、 浮 點(diǎn) 型 常 量 , 以 及 字 符 串 常 量等 。 程 序 是 根 據(jù) 程 序 中 常 量 的 書 寫 格 式 來 區(qū) 分 它 是哪 種 類 型 常 量 的 。 返 回 301.整 型 常 量在 程 序 中 書 寫 整 型 常 量 時(shí) , 沒 有 小 數(shù) 部 分 。 用 戶 可 根 據(jù)需 要 分 別 可 以 用 十 進(jìn) 制 、 八 進(jìn) 制 和 十 六 進(jìn) 制 的 形 式 書 寫 : 十 進(jìn) 制 格 式 : 由 數(shù) 字 0至 9和 正 、 負(fù) 號 組 成 , 書 寫 時(shí) 直接
36、 寫 出 數(shù) 字 , 如 : 123, -516, +1000等 。 八 進(jìn) 制 格 式 : 以 數(shù) 字 0開 頭 的 數(shù) 字 ( 0至 7) 序 列 ,0111, 010007, 0177777等 。 十 六 進(jìn) 制 格 式 : 以 0 x或 0X開 頭 的 數(shù) 字 ( 數(shù) 字 0至 9、 字母 a至 z) 序 列 , 如 0 x78AC, 0 xFFFF等 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 312.浮 點(diǎn) 型 常 量只 能 用 十 進(jìn) 制 來 表 示 。 可 以 用 小 數(shù) 或 指 數(shù) 形 式 表 示 , 不 分單 精 度 和 雙 精 度 類 型 。
37、如 : 34.5 , .345, 1.5e-33.字 符 型 常 量 ( 1) 用 一 對 單 引 號 括 起 來 的 一 個(gè) 字 符 , 單 引 號 只 是 字符 與 其 他 部 分 的 分 割 符 , 不 是 字 符 的 一 部 分 , 并 且 , 不 能用 雙 引 號 代 替 單 引 號 。 在 單 引 號 中 的 字 符 不 能 是 單 引 號 或反 斜 杠 。 如 : a , A , # 合 法 的 字 符 常 量 , 非 法 的 字 符 常 量 “ A” 不 代 表 字 符 常 量 ( 2) 另 一 種 表 示 字 符 常 量 的 方 法 是 使 用 轉(zhuǎn) 義 字 符 。C+規(guī) 定
38、, 采 用 反 斜 杠 后 跟 一 個(gè) 字 母 來 代 表 一 個(gè) 控 制 字 符 ,具 有 新 的 含 義 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 32C+中 常 用 的 轉(zhuǎn) 義 字 符轉(zhuǎn) 義 字 符 含 義 ASCII碼 值 ( 十 進(jìn) 制 )a 響 鈴 ( BEL) 7b 退 格 ( BS) 8n 換 行 ( LF) 10r 回 車 ( CR) 13t 水 平 制 表 ( HT) 9v 垂 直 制 表 ( VT) 11 反 斜 杠 92 單 引 號 39” 雙 引 號 340 空 格 符 ( NULL) 0ddd 任 意 字 符 3位 八 進(jìn) 制 數(shù)xhh
39、 任 意 字 符 2位 十 六 進(jìn) 制 數(shù) 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 334.字 符 串 常 量 用 一 對 雙 引 號 括 起 來 的 一 個(gè) 或 多 個(gè) 字 符 的 序 列 稱 為 字符 串 常 量 或 字 符 串 。 字 符 串 以 雙 引 號 為 定 界 符 , 雙 引 號 不作 為 字 符 串 的 一 部 分 。 如 : “ Hello” , “ Good Morning!” , “ I say: “ Goodbye!” ” 字 符 串 中 的 字 符 數(shù) 稱 為 該 字 符 串 的 長 度 , 在 存 儲(chǔ) 時(shí) ,系 統(tǒng) 自 動(dòng) 在 字 符
40、串 的 末 尾 加 以 字 符 串 結(jié) 束 標(biāo) 志 , 即 轉(zhuǎn) 義 字符 0 。5.符 號 常 量 常 量 也 可 用 一 個(gè) 標(biāo) 識(shí) 符 來 代 表 , 稱 為 符 號 常 量 。 如 :#define PRICE 30main() 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 34使 用 符 號 常 量 應(yīng) 注 意 以 下 幾 個(gè) 方 面 :( 1) 它 不 同 于 變 量 , 在 作 用 域 內(nèi) 其 值 不 能 改 變 和 賦 值 。 如 : 在 上 例 中 如 再 用 PRICE=40;這 一 語 句 進(jìn) 行 賦 值 則 是錯(cuò) 誤 的 。( 2) 符 號 常 量
41、名 一 般 用 大 寫 , 而 變 量 名 用 小 寫 ,以 示 區(qū) 別 。6. 程 序 中 常 量 的 表 示 方 法在 程 序 中 的 常 量 有 以 下 三 種 表 示 方 法 :( 1) 在 程 序 中 直 接 寫 入 常 量如 : -200, 3.4E-10,A, 1, 0 x120, 045, 5.35, 1000l int i; char s; float f; i=20; s=a; f=2.0; 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 35( 2) 利 用 #define定 義 宏 常 量一 般 格 式 : #define 宏 名 常 數(shù)如 : #d
42、efine PI 3.14 s=2*PI*r; ( 3) 利 用 const定 義 正 規(guī) 常 數(shù) 一 般 格 式 : const 數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 常 數(shù) 名 =常 量 值 ;說 明 : const必 須 放 在 被 修 飾 類 型 符 和 類 型 名 前 面 數(shù) 據(jù) 類 型 是 一 個(gè) 可 選 項(xiàng) , 用 來 指 定 常 數(shù) 值 的 數(shù) 據(jù) 類 型 ,如 果 省 略 了 該 數(shù) 據(jù) 類 型 , 那 么 編 譯 程 序 認(rèn) 為 它 是 int 類 型 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 36如 : const int a=10; 表 示 定 義 了
43、一 個(gè) 初 始 值 為 10的 整 型 常量 , 它 在 程 序 中 不 可 改 變 , 但 可 用 于 表 達(dá) 式 的 計(jì) 算 中 ,2.3.1.4 變 量1 變 量 的 概 念 及 特 點(diǎn) 每 一 變 量 就 相 當(dāng) 于 一 個(gè) 容 器 , 對 應(yīng) 著 計(jì) 算 機(jī) 內(nèi) 存 中 的 某一 塊 存 儲(chǔ) 單 元 , 用 于 存 儲(chǔ) 程 序 中 的 數(shù) 據(jù) 。 變 量 的 值 具 有 以下 兩 個(gè) 特 點(diǎn) :( 1) “ 一 充 即 無 ” : 即 將 一 個(gè) 新 數(shù) 據(jù) 存 放 到 一 個(gè) 變 量 中時(shí) , 該 變 量 中 原 來 的 值 消 失 , 變 量 的 值 變 成 了 新 值 。如 :
44、 執(zhí) 行 完 語 句 int i; i=10; i=20;后 i的 值 為 20, 而 不 是 10。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 37( 2) “ 取 之 不 盡 ” : 可 將 某 個(gè) 變 量 的 值 與 程 序 中 的 其 它數(shù) 據(jù) 進(jìn) 行 各 種 運(yùn) 算 , 在 運(yùn) 算 過 程 中 , 如 果 沒 有 改 變 該 變量 的 值 時(shí) , 那 么 , 不 管 用 該 變 量 的 值 進(jìn) 行 多 少 次 運(yùn) 算 ,其 值 始 終 保 持 不 變 。 如 : 語 句 int i,j,k; i=10; j=i+10; k=i+j*5;其 中 , i的 值
45、可 無限 制 地 多 次 使 用 , 但 它 的 值 始 終 保 持 值 10, 因 為 在 程 序中 沒 有 改 變 變 量 i的 值 。2 定 義 變 量 程 序 中 的 每 一 變 量 , 都 要 先 定 義 , 后 使 用 。定 義 變 量 的 一 般 有 以 下 三 種 格 式 :數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 變 量 名 ;數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 變 量 名 =初 始 化 值 ; 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 38數(shù) 據(jù) 類 型 標(biāo) 識(shí) 符 變 量 名 1=初 始 值 1, 變 量 名 2=初 始 值2, ;如 :char a; /定 義 字
46、符 型 變 量 aint i=1000; /定 義 整 型 變 量 i, i的 初 始 值 為 1000;float a=2,b=3,c; /定 義 浮 點(diǎn) 型 變 量 a、 b、 c,且 a、 b的 初 始 值 分 別 為 2、 3。 變 量 名 是 每 個(gè) 變 量 的 名 稱 , 其 命 名 遵 循 以 下 規(guī) 則 :( 1) 由 字 母 、 數(shù) 字 和 下 劃 線 ( _) 三 類 符 號 排 列 組 合 形成 , 且 開 頭 字 符 必 須 是 字 母 或 下 劃 線 。( 2) 名 稱 中 字 符 的 最 大 個(gè) 數(shù) 是 31個(gè) 。 ( 3) C+中 區(qū) 分 變 量 名 的 大 小
47、寫 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 39( 4) 變 量 名 不 能 和 C+中 的 關(guān) 鍵 字 同 名 , 也 不 能 和 用 戶編 制 的 函 數(shù) 或 C+庫 函 數(shù) 同 名 。 如 : int, double或 static都不 能 作 為 變 量 名 。( 5) 變 量 名 盡 量 做 到 “ 見 名 知 意 ” 。3 定 義 變 量 的 位 置 在 程 序 中 的 不 同 位 置 采 用 不 同 的 變 量 定 義 方 式 , 決 定了 該 變 量 具 有 不 同 的 特 點(diǎn) 。 變 量 的 定 義 一 般 可 有 以 下 三種 位 置 :(
48、1) 在 函 數(shù) 體 內(nèi) 部 在 函 數(shù) 體 內(nèi) 部 定 義 的 變 量 稱 為 局 部 變 量 , 這 種 局 部 變量 只 在 進(jìn) 入 定 義 它 的 函 數(shù) 體 時(shí) 起 作 用 , 離 開 該 函 數(shù) 體 后該 變 量 就 消 失 ( 被 釋 放 ) , 即 不 再 起 作 用 。 因 此 , 不 同函 數(shù) 體 內(nèi) 部 可 以 定 義 相 同 名 稱 的 變 量 , 而 互 不 干 擾 。 如 : 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 40void func1(void) int y; y=2;void func2(void) int y; y=-100;
49、在 本 例 中 , 函 數(shù) func1和 func2的 函 數(shù) 體 內(nèi) 部 都 分 別 定 義了 變 量 y, 但 它 們 都 只 能 在 各 自 的 函 數(shù) 體 內(nèi) 起 作 用 , 都 是局 部 變 量 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 41( 2) 形 式 參 數(shù) 當(dāng) 定 義 一 個(gè) 有 參 函 數(shù) 時(shí) , 函 數(shù) 名 后 面 括 號 內(nèi) 的 變 量 , 統(tǒng) 稱 為 形 式參 數(shù) 。 如 :int is_in(char *a, char b) while(*a) if (*a=b) return 1; else a+; return 0; 本 例 中
50、, 函 數(shù) 名 is_in后 面 括 號 內(nèi) 的 變 量 a和 b是 該 函 數(shù) 的 形 式 參 數(shù) ,它 們 都 只 能 在 該 函 數(shù) 體 內(nèi) 起 作 用 , 是 該 函 數(shù) 的 局 部 變 量 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 42( 3) 全 局 變 量 : 在 所 有 函 數(shù) 體 外 部 定 義 的 變 量 , 其 作 用范 圍 是 整 個(gè) 程 序 , 并 在 整 個(gè) 程 序 運(yùn) 行 期 間 有 效 。 如 :#include “stdio.h”int count; /定 義 count變 量 是 全 局 變 量void func1(void);
51、 void func2(void);int main() count=10; func1(); return 0; 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 43void func1(void) int temp; temp=count; func2(); printf(“count is %d”, count); / /輸 出 10void func2(void) int count; for(count=1;count10;count+) putchar(.); 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 442.3.2 運(yùn) 算 符 和 表
52、 達(dá) 式 程 序 中 對 數(shù) 據(jù) 進(jìn) 行 的 各 種 運(yùn) 算 是 由 運(yùn) 算 符 來 決 定 的 ,不 同 運(yùn) 算 符 的 運(yùn) 算 方 法 和 特 點(diǎn) 是 不 同 的 , 從 此 可 以 看出 , 一 個(gè) 運(yùn) 算 式 子 中 要 涉 及 到 數(shù) 據(jù) 及 運(yùn) 算 符 , 而 運(yùn) 算符 是 對 數(shù) 據(jù) 進(jìn) 行 指 定 操 作 , 并 產(chǎn) 生 新 值 的 特 殊 符 號 。2.3.2.1 算 術(shù) 運(yùn) 算 符 和 算 術(shù) 表 達(dá) 式 算 術(shù) 運(yùn) 算 符 就 是 對 數(shù) 據(jù) 進(jìn) 行 算 術(shù) 運(yùn) 算 , 如 : 加 、 減 、乘 、 除 等 , 是 在 程 序 中 使 用 最 多 的 一 種 運(yùn) 算 符
53、, C+的 算 術(shù) 運(yùn) 算 符 如 表 2.4所 示 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 45運(yùn) 算 符 功 能 數(shù) 據(jù) 類 型 例 子- 負(fù) 號 數(shù) 值 x=-y;+ 加 數(shù) 值 z=x+y;- 減 數(shù) 值 z=x-y;* 乘 數(shù) 值 z=x*y/ 除 數(shù) 值 z=x/y;% 求 余 整 數(shù) z=x%y+ 自 加 數(shù) 值 z+或 +z 表 2.4 C+的 算 術(shù) 運(yùn) 算 符 - 自 減 數(shù) 值 z-或 -z 算 術(shù) 表 達(dá) 式 是 指 由 算 術(shù) 運(yùn) 算 符 、 括 號 將 常 量 、 變 量 、 函數(shù) 、 圓 括 號 等 連 接 形 成 的 一 個(gè) 有
54、意 義 的 式 子 。 如 : 返 回 46(1+x)/(3*x)(2*x-3)*x+2)*x)-53.14*sqrt(r)b*b-4.0*a*c注 意 :( 1) 表 達(dá) 式 中 的 括 號 不 管 有 多 少 層 , 一 律 使 用 圓 括 號 。( 2) 在 將 一 個(gè) 數(shù) 學(xué) 上 的 運(yùn) 算 式 子 寫 成 對 應(yīng) 的 C+的 表 達(dá)式 時(shí) , 要 注 意 進(jìn) 行 必 要 的 轉(zhuǎn) 換 。 乘 號 不 能 省 略 。 數(shù) 學(xué) 表 達(dá) 式 中 出 現(xiàn) 的 數(shù) 學(xué) 運(yùn) 算 函 數(shù) 要 用 C+提 供 的 對應(yīng) 的 數(shù) 學(xué) 運(yùn) 算 庫 函 數(shù) 來 代 替 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn)
55、 算 符 和 表 達(dá) 式 返 回 47 要 特 別 注 意 表 達(dá) 式 中 兩 個(gè) 整 型 數(shù) 相 除 的 情 況 。 如 :有 一 數(shù) 學(xué) 表 達(dá) 式 為 2/3(f-32), 要 寫 成 對 應(yīng) 的 C+的 表 達(dá)式 時(shí) , 正 確 地 寫 法 應(yīng) 寫 2.0/3.0*(f-32)。 而 不 是 2/3*(f-32)2.3.2.2 賦 值 運(yùn) 算 符 和 賦 值 表 達(dá) 式 賦 值 運(yùn) 算 符 的 功 能 將 某 個(gè) 數(shù) 據(jù) 的 值 賦 給 某 個(gè) 變 量 。賦 值 運(yùn) 算 符 的 用 法 格 式 :變 量 名 賦 值 運(yùn) 算 符 常 量 、 變 量 或 表 達(dá) 式說 明 :( 1) 被
56、賦 值 的 目 標(biāo) , 即 賦 值 運(yùn) 算 符 左 邊 的 量 必 須 是 變量 , 而 不 能 是 常 量 或 表 達(dá) 式 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 48( 2) C+中 的 賦 值 運(yùn) 算 符 如 表 2.5所 示 。( 3) 要 注 意 區(qū) 分 賦 值 運(yùn) 算 符 “ =”與 數(shù) 學(xué) 上 的 “ 等 號 ” 間的 區(qū) 別 , 如 :int x,y; /定 義 變 量 x,y為 int類 型 變 量x=10; /將 變 量 x賦 成 值 10賦 值 運(yùn) 算 符 例 子 等 價(jià) 形 式= x=x+y x=x+y+= x+=y+z x=x+(y+z
57、)-= x-=y+z x=x-(y+z)*= x*=y+z x=x*(y+z)/= x/=y+z x=x/(y+z)%= x%=y+z x=x%(y+z) 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 49x=x+20; /將 x的 值 在 原 值 ( 10) 的 基 礎(chǔ) 上 再 加 上 值 20后 ( 結(jié) 果 為 30) 賦 給 變 量 xy-=x+5; /等 價(jià) 于 y=y-(x+5); 右 邊 表 達(dá) 式 的 值 為 30- (31+5)=-6, y被 賦 成 值 -6x%=y+10; /等 價(jià) 于 x=x%(y+10); 右 邊 表 達(dá) 式 的 值 為 31%(-
58、6+10)=3, y被 賦 成 值 32.3.2.3 sizeof運(yùn) 算 符 sizeof運(yùn) 算 符 功 能 是 求 某 一 數(shù) 據(jù) 類 型 或 某 一 變 量 在 內(nèi) 存中 所 占 空 間 的 字 節(jié) 數(shù) 。 其 使 用 的 一 般 形 式 :sizeof(變 量 名 或 數(shù) 據(jù) 類 型 )或 sizeof 變 量 名 或 數(shù) 據(jù) 類 型如 : 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 50#include void main()short int aShort; int anInt; long aLong; char aChar; float aReal; cou
59、tdata typetmemory used(bytes); coutnshort inttsizeof(aShort); coutninteger tsizeof(anInt); coutnLong integertsizeof(aLong); coutnchar achart sizeof(aChar); coutnfloat tsizeof(aReal); 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 51其 輸 出 結(jié) 果 為 :data type memory used(bytes)short int 2integer 4Long integer 4char a
60、char 1float 4 2.3.2.4 關(guān) 系 運(yùn) 算 符 和 關(guān) 系 表 達(dá) 式 關(guān) 系 運(yùn) 算 符 就 是 對 兩 個(gè) 量 之 間 進(jìn) 行 比 較 的 運(yùn) 算 符 , 如表 2.6所 示 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 52 由 關(guān) 系 運(yùn) 算 符 將 兩 個(gè) 表 達(dá) 式 連 接 形 成 的 運(yùn) 算 式 子 是 關(guān) 系 表 達(dá) 式 ,一 個(gè) 關(guān) 系 表 達(dá) 式 的 值 是 一 個(gè) 邏 輯 值 , 當(dāng) 為 真 時(shí) , 值 為 1, 為 假 時(shí) , 值為 0。如 : 假 設(shè) a=1, b=20, c=3, 則ab 表 達(dá) 式 成 立 , 其 值 為
61、1b=c 表 達(dá) 式 不 成 立 , 其 值 為 0(a+b)!=c表 達(dá) 式 成 立 , 其 值 為 1關(guān) 系 運(yùn) 算 符 含 義 例 子10= 小 于 或 等 于 (x+y)*2 大 于 x+yz= 大 于 或 等 于 x-y=a*b+2= = 等 于 x+y=a+b!= 不 等 于 x-y!=0 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 53注 意 :在 對 兩 個(gè) 表 達(dá) 式 的 值 進(jìn) 行 是 否 相 等 的 比 較 時(shí) , 要 用 運(yùn) 算 符“ =”, 而 不 能 寫 成 “ =”。2.3.2.5 邏 輯 運(yùn) 算 符 和 邏 輯 表 達(dá) 式 邏 輯 運(yùn) 算
62、 符 是 對 兩 個(gè) 邏 輯 量 間 進(jìn) 行 運(yùn) 算 的 運(yùn) 算 符 , 如 表2.7所 示 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式邏 輯 運(yùn) 算 符 含 義 例 子! 邏 輯 非 !(x10)則 表 達(dá)式 i 則 表 達(dá) 式i+|i+|i+的 值 為 1( 真 ) , 運(yùn) 算 結(jié) 束 后 , 變 量 i的 值 為 2,而 不 是 4。 對 于 數(shù) 學(xué) 上 的 表 示 多 個(gè) 數(shù) 據(jù) 間 進(jìn) 行 比 較 的 表 達(dá) 式 , 在C或 C+中 要 拆 寫 成 多 個(gè) 條 件 并 用 邏 輯 運(yùn) 算 符 連 接 形 成 一個(gè) 邏 輯 表 達(dá) 式 。 如 : 在 數(shù) 學(xué) 上 ,
63、 要 表 示 一 個(gè) 變 量 a的 值 處于 -1和 -9之 間 時(shí) , 可 以 用 -9a-9 float a,b; a=float(i); /將 變 量 i的 類 型 強(qiáng) 制 轉(zhuǎn) 換 為 浮 點(diǎn) 型 , 并 將 其 值 賦 給 變 量 a b=(float)i; /將 變 量 i的 類 型 強(qiáng) 制 轉(zhuǎn) 換 為 浮 點(diǎn) 型 , 并 將 其 值 賦 給 變 量 b2.3.2.9 逗 號 運(yùn) 算 符 逗 號 運(yùn) 算 符 的 運(yùn) 算 優(yōu) 先 級 是 最 低 的 。 一 般 形 式 為 :表 達(dá) 式 1, 表 達(dá) 式 2, , 表 達(dá) 式 N 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá)
64、式 返 回 62 在 計(jì) 算 逗 號 表 達(dá) 式 的 值 時(shí) , 按 從 左 至 右 的 順 序 依 次 分別 計(jì) 算 各 個(gè) 表 達(dá) 式 的 值 , 而 整 個(gè) 逗 號 表 達(dá) 式 的 值 和 類 型是 由 最 右 邊 的 表 達(dá) 式 決 定 。如 : 有 語 句 int a=3,b=4; 則 表 達(dá) 式 a+,b+,a+b的 值 為 9。再 如 : 設(shè) 有 int i;則 表 達(dá) 式 i=1,i+=2?i+1:i+4的 值 為 6。2.3.2.10 運(yùn) 算 符 的 優(yōu) 先 級 與 結(jié) 合 性 每 個(gè) 運(yùn) 算 符 都 有 自 己 優(yōu) 先 級 和 結(jié) 合 性 。 當(dāng) 一 個(gè) 表 達(dá) 式中 包
65、含 多 個(gè) 運(yùn) 算 符 時(shí) , 要 確 定 運(yùn) 算 的 結(jié) 果 , 必 須 首 先 確定 運(yùn) 算 的 先 后 順 序 , 即 運(yùn) 算 符 的 優(yōu) 先 級 和 結(jié) 合 性 。 C+中運(yùn) 算 符 的 優(yōu) 先 級 和 結(jié) 合 性 如 表 2.11所 示 。 2.3 C+數(shù) 據(jù) 類 型 、 運(yùn) 算 符 和 表 達(dá) 式 返 回 63優(yōu) 先 級 運(yùn) 算 符 結(jié) 合 性1 ( ) : : - . .* -* 自 左 至 右2 ! + - + - * 說 明 :( 1) cout是 系 統(tǒng) 預(yù) 定 義 的 一 個(gè) 標(biāo) 準(zhǔn) 輸 出 設(shè) 備 ( 一 般 代 表顯 示 器 ) ; “ ”是 輸 出 操 作 符 ,
66、用 于 向 cout輸 出 流 中 插入 數(shù) 據(jù) 。( 2) cout的 作 用 是 向 標(biāo) 準(zhǔn) 輸 出 設(shè) 備 上 輸 出 數(shù) 據(jù) , 被 輸 出的 數(shù) 據(jù) 可 以 是 常 量 、 已 有 值 的 變 量 或 是 一 個(gè) 表 達(dá) 式 。 返 回 65 如 :#include #include void main() float a=3,b=4; cout The result is :; coutsqrt(a*a+b*b); 該 程 序 的 輸 出 結(jié) 果 為 : The result is :5( 3) 可 以 在 cout輸 出 流 中 插 入 C+中 的 轉(zhuǎn) 義 字 符 。 如 :cout the value of a:n;couta; 2.4 數(shù) 據(jù) 的 輸 入 與 輸 出 返 回 66表 示 輸 出 完 字 符 串 Input the value of a:后 , 在 下 一 行 輸 出變 量 a的 值 。( 4) 可 以 將 多 個(gè) 被 輸 出 的 數(shù) 據(jù) 寫 在 一 個(gè) cout中 , 各 輸 出項(xiàng) 間 用 “ ”操 作 符 隔 開 即 可 , 但 要 注 意 cout
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧汽貿(mào)的戰(zhàn)略規(guī)劃課件
- 農(nóng)藥產(chǎn)品化學(xué)登記評審中存在的問題修改
- 職業(yè)適應(yīng)與發(fā)展
- 中國傳統(tǒng)思想和領(lǐng)導(dǎo)藝術(shù)
- 學(xué)習(xí)英語最好的方法課件
- 團(tuán)隊(duì)建設(shè)與管理教材(PPT 42頁)
- 商務(wù)談判的準(zhǔn)備培訓(xùn)課件
- 單元吃奶和豆及其制品
- 氣管切開護(hù)理
- 七上281有理數(shù)的乘法1
- 素質(zhì)拓展學(xué)分重要性
- 地產(chǎn)項(xiàng)目策劃廣告創(chuàng)意
- 華通檸檬渠道推廣活動(dòng)案
- 酸堿平衡紊亂的判讀
- 氣管插管的困難評估課件