4.1 求表示式 5 + 10 * 20 / 2 的結果
int n = 5 + 10 * 20 / 2; //105
4.2 在表示式新增括號,使其與原本表達的意思一致
std::vectorvec = ;
std::cout << *vec.begin() << std::endl; // 1
std::cout << *(vec.begin()) << std::endl; // 1
std::cout << *vec.begin() + 1 << std::endl; // 2
std::cout << *(vec.begin() + 1) << std::endl; // 2
4.4 給下面的表示式新增括號,使其符合求值過程
分析:本題主要考察 * %與+的優先順序
int a = 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2;
int b = (((12 / 3) * 4) + (5 * 15)) + ((24 % 4) / 2);
4.5 計算下列各表示式的值
int v1 = -30 * 3 + 21 / 5; // -86
int v2 = -30 + 3 * 21 / 5; // -18
int v3 = 30 / 3 * 21 % 5; // 0
int v4 =-30 / 3 * 21 % 4; // -2
4.6 判斷乙個數是奇數還是偶數
int a = 0;
if (0 == a % 2)
else
4.8 說明在邏輯與、或及相等性運算子中運算物件的求值順序
在邏輯與、或中會先計算符號左側的運算物件,若根據左側物件的結果無法確定表示式的值,然後會計算右側的物件。(短路求值)
對於相等性運算子的求值順序,c++中沒有明確規定。
4.9 解釋if語句的求值順序
解:遵循短路求值的原則。首先判斷cp是否為nullptr,若是,則最終結果為false,若不是,則計算*cp的值,從而確定最終結果
const char *cp = "hello world";
if (cp && *cp)
4.10 使用while迴圈從標準輸入讀取整數,當為42時,停止讀入
int nnumber = 0;
while (std::cin >> nnumber && 42 != nnumber)
4.11 書寫一條表示式用於計算a,b,c,d四個值的大小,保證a>b>c>d
a > b && b > c && c > d
4.12 假設i、j、k是三個整數,說明表示式 i != j < k 的含義
解:因為《運算子的優先順序高於!=,因此上述表示式等價於 i != (j < k),先計算j 5 10 20 2 105 vec.begin vec.begin vec.begin 1 vec.begin 1 可以接受,效率提高比較難,但是程式的缺陷可以通過努力克服。12 3 4 5 15 24 4 2 30 3 21 5 86 30 3 21 5 18 30 3 21 5 0 30 3 2... 一。填空題 1 基 派生 2 單繼承 多繼承 3 私有繼承方式 4 公有 保護 5 多繼承 6 支配原則 7 解決二義性 8 使用作用域運算子 引進虛基類 二。選擇題 1 5 b cd abc c a 6 10 c b d ad a 三。判斷題 f t f t f f 四。簡答題 1.在物件導向技術... 一 填空題 1 如類果類a繼承了b,那麼類a被稱為 基類,而類b被稱為 派生類。2 c 的兩種繼承為 單繼承和 多繼承。3 在預設情況下的繼承方式為 私有繼承方式 4 從基類中公有派生乙個類時,基類的公有成員就成為派生類的 公有 成員,而這個基類的保護成員就成為派生類的 保護成員。5 c 提供了 多...C primer 習題 第四章 1 10
第四章習題
第四章 習題