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 

 

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