c++的关键字相较于c的关键字的变化,分为新增关键字、新增语义、语义变化、无变化四大类,无变化的我们不提,只看前三部分。
bool
bool类型也叫逻辑类型,是个两值enum,结果为true和false(这两个也是c++的关键字),我们在c程序中也见过bool,实际上c中并没有bool这个关键字,是编程的人自己使用typedef int bool来重命名的,而在c++中原生就支持了该类型,一般占1个字节(与平台有关),用法与c中自定义的相同,因为编译器本来就认识bool,所以在c++中函数重载时,会认为bool是一个不同的类型。
char
字符类型,一般占用1字节(c和c++并没明确占用1字节),表示字符(ASCI或unicode字符);从c++14开始,char的符号类型取决于平台,如ARM平台是unsigned char,在x64使用的signed char。因为不确定,所以如果我们的程序中对符号有特殊要求,建议指定unsigned和signed。char类型的变量存储的数字在使用cout输出时,会把数字替换成对应的ASCI码输出,而int输出的才是数字。无论什么平台,基本上类型占用的字节满足以下规律。
1byte == char <= short <= int <= long <= long long;
wchar_t
宽字符类型,用于应对超出一个字节的字符的unicode,如汉字。使用和char高度相似,wchar_t具体占用几个字节与平台有关,可能是int也可能是unsigned short,wchar的变量不能使用cin和cout,要使用专用的wcin和wcout,对应的字符串也有一个wstring。
char_8
char占几个字节,语言本身是没有规定,主要是由编译器决定的,为了规避这个问题,c++使用char8_t、char16_t、char32_t来进行补充规定。且他们都是无符号类型,stm32单片机中使用的u8其实就是 char8_t。对应的字符串类也就是u8string、u16string、u32string
运算符代用and
在c中的逻辑与或非,在c++中还是可以使用,且大部分程序员也都习惯用逻辑符号,在c++中为了降低学习难度,还为其设计了等效的关键字,如and(&&)、or(||)、not(!)等,作为一个有c功底的工程师,其实没太大的意义,所以我们不去展开讲