c++基本数据类型有算数类型(arithmetic)和空类型(void)。其中算数类型包括bool,字符,整型,浮点。
算数类型大致可以分为两种,一种是整型(integral type。包括bool, 字符,整型);另一种是浮点数。
bool, char, wchar_t, char16_t, char32_t, short, int, long, long long, float, double, long double
符号修饰符
signed,unsigned
注意char、signed char、unsigned char是三种不同的类型,这点容易混淆。
有符号无符号转换:位不变,数值可能会变。
不等位转换:位截断,数值可能会变。位扩展,数值不变。
不等位,有无符号间转换:先调整位数,再作符号转换。
整型、浮点型转换:
隐式转换规则:
①为防止精度损失,类型总是被提升为较宽的类型。
②所有含有小于整型类型的算术表达式在计算之前其类型都会被转换成整型。
c++类型转换详解见http://blog.csdn.net/u012085988/article/details/17584903
如在程序中写了个3,那么这个3是什么类型呢?c++会按照一定的规则来处理字面值常量:
整型:书写格式有三种十进制,八进制,十六进制。默认情况下,十进制是带符号类型,八进制和十六进制可能带符号,也可能不带符号。十进制的字面值的类型是int,long,long long中的尺寸最小的。(例如3,则是int型,而不是char型;如果数太大,int装不下,则是long型...)。八进制和十六进制的字面值是int, unsigned int, long, unsigned long, long long, unsigned long long中的尺寸最小的。如果一个字面值连与之关联的最大类型都放不下,将产生错误。
尽管十进制字面值的类型是带符号的,但十进制的字面值不会是负数。因为字面值-42,前面的负号并不在字面值之内,它仅是对字面值42取负数而已。
浮点数:浮点数的字面值可以用小数表示,也可以用科学计数法表示。默认类型是double。
字面值还可以通过一些前缀和后缀来修饰其类型。
如
前缀 | 含义 | 类型 |
u | unicode16 | char16_t |
U | unicode32 | char32_t |
L | 宽字符 | wchar_t |
u8 | UTF-8 | char |
后缀 | 类型 |
u/U(整型) | unsigned |
l/L(整型) | long |
ll/LL(整形) | long long |
f/F(浮点) | float |
l/L(浮点) | long double |