算数类型
最小尺寸仅供参考,具体尺寸看编译器及系统环境。
C++规定一个char类型的空间应确保可以存放机器基本字符集中任意字符对应的数字值。也就是说,一个char的大小和一个机器字节一样大。
wchar_t,char16_t,char32_t用于扩展字符集。
拓展 :
wchar_t
由于char只能表示ASCII中的字符,对于中文,韩文等无法满足要求,于是出现了wchar_t,称为宽字符类型,它占据两个字节。可以通过加上前缀L来表示宽字符常量或宽字符串。
wchar_t ch = L'a';
wcout << ch << endl;
char16_t & char32_t
对于char16_t和char32_t我们可以理解为比wchar_t更加强大,能表示的字符更多的一种类型。准确地说,char16_t是可以表示utf-16编码的字符(utf-16就是用16位编码一个Unicode字符),char32_t是可以表示utf-32编码的字符。给字符或字符串前面加个u就是char16_t,加个U就是char32_t。但是在VS中只能加前缀L有效。对于初学者来说wchar_t足够用了。
带符号和无符号类型
与其他整形不同,字符型被分成了char,signed char和unsigned char。要注意的是char与signed char并不相同。尽管字符型有三种,但字符的表现形式只有两种,带符号的和无符号的。char会表现为上述两种形式的一种,具体是哪种由编译器决定。
建议
1.当明确知晓数值不可能为负数时选用无符号类型
2.在实际应用中,short常常显得太小,而long一般和 int一样大,如果你的数值超过了int范围,请选用long long。
3.在算数表达式中不要用char或bool。如果你需要使用一个不大的整数,请明确是signed char还是unsigned char
4.执行浮点数运算选用double,因为float的精度通常不够且双精度和单精度的计算代价相差无几