C++之路 Day2

C++類型

      首先明確一個概念,什麼是類型?我們知道程序可以說是由兩部分組成:數據結構+算法。通過學習數學,我們知道形容一個東西的存在是形式時,我們可以用個,塊,桶,串等詞來描述,在買賣過程中,使用貨幣時,我們有元角分單位。在描述這些東西存在的數量時,我們就用到了數字,不同國家的語言在描述數量時的手法不一樣。所以爲了能將這些雜七雜八的東西給存入計算機,計算機對數據的存儲進行了分類,並統一了類型標準。

         基本數據類型

bool 存儲值 true / false
char 通常存儲一個 八位 字符 
int  
float 單精度浮點值。單精度是這樣的格式,二進制從左往右:1位符號,8位指數,23位小數。
double 雙精度浮點值。雙精度是1位符號,11位指數,52位小數。
void 表示類型的缺失
wchar_t 寬字符類型,char是8位字符類型,最多隻能包含256種字符,許多外文字符集所含的字符數目超過256個,char型無法表示。

wchar_t數據類型一般爲16位或32位,但不同的C或C++庫有不同的規定,如GNU Libc規定wchar_t爲32位,總之,wchar_t所能表示的字符數遠超char型

   

 

            修飾符

      在基本數據類型的情形下,還有一個修飾符的概念,可以理解爲加上修飾符改變數據類型的範圍。

修飾符 signed、unsigned、long 和 short 可應用於整型,signed 和 unsigned 可應用於字符型,long 可應用於雙精度型。修飾符 signed 和 unsigned 也可以作爲 long 或 short 修飾符的前綴。例如:unsigned long int。C++ 允許使用速記符號來聲明無符號短整數無符號長整數。您可以不寫 int,只寫單詞 unsigned、short 或 unsigned、long,int 是隱含的。extern 修飾符通常用於當有兩個或多個文件共享相同的全局變量或函數的時候。使用 static 修飾局部變量可以在 函數調用之間  保持局部變量的值,static 修飾符也可以應用於全局變量,當 static 修飾全局變量時,會使變量的作用域限制在聲明它的文件內,在 C++ 中,當 static 用在 類數據成員 上時,會導致僅有一個該成員的副本被類的所有對象共享。

            限定符

限定符
const const 類型的對象在程序執行期間不能被修改改變
volatile 修飾符 volatile 告訴編譯器不需要優化volatile聲明的變量,讓程序可以直接從內存中讀取變量。對於一般的變量編譯器會對變量進行優化,將內存中的變量值放在寄存器中以加快讀寫效率
restrict restrict的定義是:It can be applied only to pointers, and it indicates that a pointer is the sole initial means of accessing a data object。表示指針指向的內存不能被別的指針引用。告訴編譯器被restrict修飾的指針所指 向的對象,只能通過這個指針或基於這個指針的其他指針進行操作,這對編譯器的優化很有好處。

C++關鍵字

關鍵字表
alignas(C++11起 delete(C++11中改變) register(C++17中改變)
alignof (C++11起) do reinterpret_cast
and double requires (C++20 起)
and_eq dynamic_cast return
asm else short
atomic_cancel (TM TS) enum signed
atomic_commit (TM TS) explicit sizeof(C++11中改變)
atomic_noexcept (TM TS) export(C++11改變)(C++20改變) static
auto(C++11中改變) extern(C++11中改變) static_assert (C++11 起)
bitand false static_cast
bitor float struct(C++11中改變)
bool for switch
break friend synchronized (TM TS)
case goto template
catch if this
char inline(C++11中改變) thread_local (C++11 起)
char8_t (C++20 起) int throw
char16_t (C++11 起) long true
char32_t (C++11 起) mutable(C++11中改變) try
class(C++11 起) namespace typedef
compl new typeid
concept (C++20 起) noexcept (C++11 起) typename
const not union
consteval (C++20 起) not_eq unsigned
constexpr (C++11 起) nullptr (C++11 起) using(C++11中改變)
const_cast operator virtual
continue or void
co_await (C++20 起) or_eq volatile
co_return (C++20 起) private wchar_t
co_yield (C++20 起) protected while
decltype (C++11 起) public xor
default(C++11中改變) reflexpr (反射 TS) xor_eq

      每個關鍵詞詳細解釋請轉移至:https://zh.cppreference.com/w/cpp/keyword 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章