4、 表示式
※ 求餘
%操作符只能被應用在整值型別 char short int和 long 的運算元上
如果有乙個 或兩個 運算元為負 餘數的符號則取決於機器
3.14 % 3; // 編譯時刻錯誤: 浮點運算元
21 % -5; // 機器相關: 結果為 -1 或 1
※邏輯與操作符
if(a>0 && arr[a] != 3) //將有危險的(越界)放在後面
對於操作符的運算,並不保證從左到右的計算順序
ival++ && ival ptr != 0 && *ptr++ // 結果是不確定的
※sizeof
返回值的型別是 size_t 這是一種與機器相關的typedef 定義
#include 在cstddef 標頭檔案中找到它的定義 例:size_t array_size = sizeof ia;
sizeof (type name );
sizeof ( object ); 三種格式
sizeof object;
string st1( "foobar" );
string st2( "a mighty oak" );
string *ps = &st1;
cout << "st1: " << sizeof( st1 ) // 乙個 string 的大小與它所指的字串的長度無關
<< " st2: " << sizeof( st2 )
<< " ps: " << sizeof( ps )
<< " *ps: " << sizeof( *ps )
<< endl;
cout << "short :\t" << sizeof(short) << endl;
cout << "short* :\t" << sizeof(short*) << endl;
cout << "short& :\t" << sizeof(short&) << endl;
cout << "short[3] :\t" << sizeof(short[3]) << endl;
結果 st1: 12 st2: 12 ps: 4 *ps: 12
short : 2
short* : 4 在引用型別上的 sizeof 操作符返回的是包含被引用物件所需的記憶體長度
short& : 2
short[3] : 6
※ 型別轉換
△隱式型別轉換
用一種型別的表示式賦值給另一種型別的物件
把乙個表示式傳遞給乙個函式呼叫 表示式的型別與形式引數的型別不相同
從乙個函式返回乙個表示式 表示式的型別與返回型別不相同
在混合型別的算術表示式中
△ 算術轉換 保證了二元操作符的兩個運算元被提公升為共同的型別
1 為防止精度損失,如果必要的話型別總是被提公升為較寬的型別
2 所有含有小於整型的有序型別的算術表示式,在計算之前其型別都會被轉換成整 型
如果機器上的 m 型足夠表示所有 unsinged short型的值,則unsigned short int也被轉換成 int,
否則它會被提公升為unsigned int
△ 強制型別轉換
static_cast dynamic_cast const_cast和 reinterpret_cast
C Primer 學習記錄
includeusing namespace std int main while cin value 這裡所產生的是為判斷條件,先執行輸入操作 cin value 它具有從標準輸入讀取下乙個數並且將讀入的值儲存在value中的效果 返回其左運算元。當使用irtream物件作為條件,結果是測試流的狀...
c primer學習記錄(二)
string getline cin,s 讀取一行 cin讀入會自動忽略開頭的空白 空格符 換行符 製表符 從第乙個真正的字元讀起,直到遇到下一處空白為止 getline函式的引數是乙個輸入流和乙個string物件,函式從給定的輸入流中讀取內容,直到遇到換行符 換行符也被讀入 之後將所存內容存入到s...
c primer 容器 學習記錄
一般用vector 在容器中間施行插入集,則應該在輸入階段使用list,然後將內容拷貝給vector 讀取未知數量單詞,總是將新單詞插入末尾,刪除操作在頭部進行 快速隨機訪問 尾部插入好 頭部刪除好 deque 讀取固定數量單詞,將他們按字典順序插入到容器中 快速隨機訪問 尾部插入好 string ...