第2章 變數和基本型別
1.布林(bool)的取值是真(true)或者假(false),最小尺寸未定義。
2.一個bool型的算術值賦給bool型時,初始值為0則結果為false,否則都為true。
3.一個浮點數賦給整數型別時,結果值將僅保留浮點數中小數點以前的部位。
4.賦給無符號型別一個超過它表示範圍的值時,結果是初始值對無符號型別表示值總數取模後的餘數。例如,8位元大小的unsigned char 可以表示0至255區間內的值,如果我們賦了一個區間以外的值,則實際的結果是該值對256取模後所得的餘數。因此,把-1賦給8位元大小的unsigned char 所得的結果是255。
5.賦給帶符號型別一個超出它表示範圍的值時,結果是未定義的。此時。程式可能繼續工作、可能崩潰,也可能生成垃圾資料。
6.當在程式的某處使用了一種算術型別的值而其實所需的是另一種型別的值時,編譯器同樣會執行上述的型別轉換。
7.十進位制字面值的型別是int、long和long long中尺寸最小的那個,當然前提是這種型別要能容納下當前的值。八進位制和十六進位制字面值的型別是能容納其數值的int、unsigned int、long、long long和unsigned long long 中的尺寸最小者。如果一個字面值連與之關聯的最大的資料都放不下,將產生錯誤。
8.儘管整型字面值可以儲存在帶符號資料型別中,但嚴格來說,十進位制字面值不會是負數。如果我們使用了一個形如-42的負十進位制字面值,那個符號並不在字面值之內,它的作用僅僅是對字面值取負值而已。
9.編譯器在每個字串的結尾處新增一個空字元('\0'),因此,字串字面值的實際長度要比它的內容多1。
10.如果兩個字串字面值位置緊鄰且僅由空格。縮排和換行符分隔,則它們實際上是一個整體。當書寫的字串字面值比較長,寫在一行裡不太合適時,就可以採取分開書寫的方式:
//分多行書寫的字串字面值
std::cout<< "a really,really long string literal "
" that spans two lines "<<std::endl;
11.初始化的不同形式: int i=0; int i={0}; int i{0}; int i(0);
12.C++為支援分離式編譯機制,講宣告和定義區分開來。宣告使得名字為程式所知,一個檔案如果想使用別處定義的名字則必須包含那個名字的宣告。而定義負責建立與名字關聯的實體。
如果想宣告一個變數而不要定義它,就在變數名前新增關鍵字extern.而且不要顯式地初始化變數:
extern int i; // 宣告i而非定義 i
int j; //宣告並定義 j包含了
任何顯式初始化的宣告即成為定義。我們能給由extern關鍵字標記的變數賦一個初始值,但是這麼做也就抵消了extern的作用。extern語句如果包含初始值就不再是宣告,而變成定義:
extern double pi=3.1416 //定義
13.變數能且只能被定義一次,但是可以被多次宣告。
14.C++的識別符號由字母、數字和下劃線組成,其中必須以字母或下劃線開頭。識別符號的長度沒有限制,但是對大小寫字母敏感。
15.變數命名有許多約定俗成的規範,下面的這些規範能有效提高程式的可讀性:
*識別符號要能體現實際含義。
*變數名一般用小寫字母。
*使用者自定義的類名一般以大寫字母開頭。
*如果識別符號由多個單片語成,則單詞間應有明顯區分,如 student_loan或studentLoan,不要使用studentloan。
16.同一個名字在不同的作用域中可能指向不同的實體。名字的有效區始於名字的宣告語句,以宣告語句所在的作用域末端為結束。
17.名字main定義於所有花括號之外,它和其他大多數定義在函式體之外的名字一樣擁有全域性作用域。一旦宣告之後,全域性作用域內的名字在整個程式的範圍之內都可使用。
18.作用域能彼此包含,被包含(或者被巢狀)的作用域稱為內層作用域,包含著別的作用域的作用域被稱為外層作用域。
19.新建區域性變數在其作用域能可以暫時覆蓋同名全域性變數,這時想訪問全域性同名變數可用格式為 ::變數名
20.引用即為物件另起一個名字,通過將宣告符寫成&d的形式定義引用型別。特點如下:
*引用定義必須初始化
*引用定義後即與其物件繫結到一塊,不可再重新賦值。
21.指標:
*指標本身就是一個物件,允許對指標賦值和拷貝,而且在指標的生命週期內他可以先後指向幾個不同的物件
*指標無須再定義時賦初值
*指標可以指向變數地址,但是不能指向變數的引用。因為引用不是物件,沒有實際地址,所以不能定義指向引用的指標
*訪問無效指標的後果無法預計,因此程式設計師必須清除任意給定的指標是否有效
22.
劉磊是逗逼
相關文章
- c++基本型別和變數C++型別變數
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- 第 5 小節 golang 變數型別Golang變數型別
- C++入門教程(5):基本資料型別和變數C++資料型別變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- C++中的基本變數型別介紹C++變數型別
- python—資料型別和變數Python資料型別變數
- 寫給.NET開發者的Python教程(二):基本型別和變數Python型別變數
- js基本型別和引用型別區別JS型別
- Java的基本型別和引用型別Java型別
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- 強型別語言變數和資料型別的理解變數資料型別
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- PHP變數型別PHP變數型別
- Java 變數型別Java變數型別
- 變數型別-Set變數型別
- JS篇-基本型別和引用型別、typeofJS型別
- 1、變數和簡單資料型別變數資料型別
- python:變數和簡單資料型別Python變數資料型別
- 學習變數的目的及基本資料型別介紹變數資料型別
- C++教程-----C++變數型別和變數的定義C++變數型別
- PLC結構化文字(ST)——變數型別和變數屬性變數型別
- Python語法--可變型別和不可變型別Python型別
- java基本型別和包裝型別的“==”和equals()方法Java型別
- Java基礎-基本型別和包裝型別Java型別
- 資料型別,變數資料型別變數
- JavaScript - 變數、值、型別JavaScript變數型別
- 變數型別轉換變數型別
- TypeScript 基本型別和泛型的使用TypeScript型別泛型
- Java雜記1—資料型別和變數Java資料型別變數
- C C++變數型別大小和範圍C++變數型別
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- 從零開始學GO ---- (1) 變數、常量、基本資料型別Go變數資料型別
- Flutter學習筆記(3)--Dart變數與基本資料型別Flutter筆記Dart變數資料型別
- 你不知道的JavaScript--Item4 基本型別和基本包裝型別(引用型別)JavaScript型別
- 淺談變數型別之外的變數命名變數型別
- 1.1.1python基本資料型別之數字和字串Python資料型別字串
- 從賦值看基本型別和引用型別的區別賦值型別
- 如何判斷變數型別變數型別