C 11之防止型別收窄

2021-10-06 12:34:15 字數 367 閱讀 2579

2. 避免型別收窄

3. 總結

c/c++語言自身提供了許多的基本資料型別, 通常情況下, 我們總是應該使用恰當的資料型別來定義相對應的變數. 除了變數名盡量起到見名知義外, 還應當使用與所定義資料型別相匹配的正確數值來初始化變數. 當然, 這是理想(正確)情況下, 某些時候, 處於疏忽或是不經意間的轉換, 會將給定數值初始化給乙個與之不匹配的資料型別. 這種情況下, 就會發生型別收窄問題. 所謂型別收窄, 「即數值產生了精度損失」. 如下:

float f =

2.3f

;int i = f;

//會存在精度損失, 2.300000 ---> 2; 小數點後面的資料被扔掉.

C 11新特性之POD型別

pod plain old data 是c 中非常重要的乙個概念,用來描述乙個型別的屬性其中plain表示這個型別是個平凡的型別,old表示其與c的相容性。c 11中將pod劃分為兩個基本概念 平凡的 trival 和標準布局 standardlayout 什麼是平凡性呢?通常乙個平凡的類或者結構體...

C 11 強型別列舉

c 11引入了一種新的列舉型別,即 列舉類 或 強型別列舉 宣告強型別列舉非常簡單,只需要在enum後加上class或struct即可。例如 enum old 老形式 enum class new 新形式 enum struct new2 新形式傳統的c 列舉型別有一些缺點 如果在相同作用域中的兩個...

C 11 強型別列舉(enum)

c 11之前的enum型別是繼承c的,不溫不火 c 11對enum動刀了,加強了型別檢查,推出強型別enum型別,眼前一亮 使用過qt 的都知道,早就應該這麼做了,用的很爽!一 c中enum型別的侷限 1 非強型別作用域 enum type1 enum type2 問題來了,兩種列舉型別都有a列舉常...