C Primer Plus 第三章筆記

2021-09-18 07:49:40 字數 1668 閱讀 7649

他們都是無符號的

char16_t 用 u表示

char32_t用u表示 

bool  非0都是true 

盡量用const而不是#define來作為常量標註   1來可以限定型別,2來可以限定作用域範圍

float型別的儲存方式: 計算機會分別儲存兩部分 1部分儲存的是值,另一部分是儲存對值得縮小放大倍數 (10的倍數)

float的精度比double精度差 如果有可能計算到超過6位的情況下 就使用double  我感覺只要是float 超過3位就可以用double了

因為float的精度只有到前7位 而他這個加1.0 是在第23位新增  無影響 所以 這個結果是0

#include int main()

e:\cpp\2019-4-12\3>.\fltadd.exe

a = 2.34e+022

b - a = 0

c++ 表示式的運算順序 先看優先順序再看運算元的結合性  

計算時一定要考慮到float型別的精度問題 這貨就到6位 剩下的就是四捨五入

關於除法的一些東西:

#include int main()
結果

e:\cpp\2019-4-12\3>divide.exe

integer division: 9/5 = 1

floating-point division: 9.0 / 5.0 = 1.800000

mixed division: 9.0/5 = 1.800000

double constants: le7/9.0 = 1111111.111111

float constants: 1e7/9.0f = 1111111.125000

這表明  除法中其中有一位數是浮點型 結果就是浮點型

預設是double  如果加了f就按float來計算  就很容易損失精度

關於資料型別隱式轉換

float 轉 int 小數點直接截斷, 並且  數值可能會超過int的最大值 這個轉換的結果 c++並沒有定義應該是什麼 所以 很有可能是隨機的。

精度高的轉換成精度低的資料型別將造成資料的不準確。

有些編譯器是不支援 直接將double或者float賦值給int型 會報錯

兩個short型別變數進行運算賦值給short型別的變數時 會先將這兩個short的值轉換為int然後進行運算,然後再轉換成short。 這麼幹的原因是運算速度快。這情況也適用於unsigned short 。會轉換成unsigned int 這樣確保了不會損失資料

其他的型別自動轉換規則

強制型別轉換:

c++風格:long(i)或c風格 (long)i 都行

或者 static_cast(i) : static_cast(value) 這種轉換更加嚴格。但是具體多嚴格 還沒說 15章的時候才說- -好久

不改變i本身而是生成1個新的,指定型別的值(說話要說全 )

auto  宣告   自動判斷資料型別。 只是簡單講了下 在stl中才用的多(python不都是這樣的麼 )

第三章完結

C Primer Plus 第三章筆記

1.變數名命名需注意 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現使用 以乙個下劃線開頭的名稱被保留給實現,用作全域性識別符號。2.對型別名使用 sizeof 運算子時,應將名稱放在括號中,但對變數名使用時括號可選。3.標頭檔案 climits 定義了符號常量來表示型別的限制。4.若不對函式...

C Primer Plus 第三章 學習

oop的本質是設計並拓展自己的資料型別,即讓型別與資料匹配。c 內建的型別,分為兩組 基本型別,復合型別。基本型別 整數,浮點數 復合型別 陣列,字串,指標和結構。標識儲存的資料的方法 使用變數 3.1簡單變數 程式必須記錄三個基本屬性 1.資訊將儲存在 2.要儲存什麼值 3.儲存何種型別的資訊 宣...

C primer plus第三章筆記

注意位 bit 位元組 byte 的區分.1bite可以為1或0,1b 位元組 256b 位 1kb 1024b.但在有的程式語言中位元組未必包含8位.舉例來講 int a 有以下四種種情況 sizeof a sizeof a sizeof a sizeof a 3.相對於c語言新的初始化方法 in...