您的位置:首页 > 编程语言 > C语言/C++

C++基本数据类型

2017-01-17 15:53 204 查看

算数类型

算数类型主要分为两大类:整形(包括字符和布尔类型)和浮点型。

布尔类型(bool)的取值是真(ture)或者假(false)。

字符类型:基础的字符类型是char,扩展如wchar_t、char16_t、char32_t等。

整型类型:short、int、long、long long等。其中一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。具体数据大小与硬件相关。

浮点类型:单精度、双精度和扩展精度。一般float占1Byte,double占2Byte,long double占3-4Byte。通常float和double分别有7和16个有效位,long double有效位与硬件有关。

带符号类型和无符号类型:除布尔类型和扩展类型外,其他整形可以划分为带符号(signed)和无符号(unsigned)两种。带符号可表示正数、负数和零,无符号只能表示正数和零。int、short、long、long long都是带符号类型,通过增加unsigned可得到无符号类型。另外,单独的unsigned为unsigned int的缩写。此外比较特殊的是char类型,与其他整型不同,char类型与signed char并不一定是一致的。实际上signed char和unsigned char是固定的,但char的类型随编译器决定,表现为前两种形式的一种。

常规的类型选择:

1、明确数值不可能为负时,使用无符号类型。

2、使用int进行整数运算。在算数表达式中不要使用char或bool,只有在存放字符或布尔值时才使用它们。若必须使用char时,应明确指出它的类型是signed char或unsigned char。

3、执行浮点运算时使用double,因为float通常精度不够并且二者计算代价相差无几。

字面值常量

整型字面值可写作十进制、八进制和十六进制的形式。以0开头的整数代表八进制,以0x或0X开头的代表十六进制。

20  /*十进制*/     024  /*八进制*/    0x14  /*十六进制*/


以上为十进制20的三种表示方法。

整型字面值具体的数据类型由它的值和符号决定。默认情况下,十进制字面值是带符号的,八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进制字面值的类型是int、long、long long中能容下当前值的最小的那个。同理,八进制和十六进制字面值的类型是int、unsigned int、long、unsigned long、long long、unsigned long long中能容下当前值的最小的那个。另外,short没有对应的字面值。

尽管整型字面值可以存储在带符号数据类型中,但严格来讲,字面值不会是负数,仅仅是对字面值取负值而已。

浮点型字面值表现为小数或以科学计数法表示的指数,其中指数部分用E或e标识。

3.14159  /*小数*/ 3.14159E0  /*科学计数法*/


以上为3.14159的两种表示方法。

默认情况下,浮点型字面值类型是double。

字符字面值是由单引号括起来的一个字符,一般称为char型字面值。

字符串字面值是由双引号括起来零个或多个字符,则为字符串型字面值。字符串字面值的类型实际上是由字符常量组成的数组,并且编译器会在结尾处添加一个空字符‘\0’,因此,字符串字面值的实际长度要比它的内容多1。另外,如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。

转义序列

在程序中,不可打印的字符和有特殊含义的字符都不能直接使用,需要通过转义序列来表示。

常用转义:

\n  /*换行符*/
\t  /*横向制表符*/
\v  /*纵向制表符*/
\b  /*退格*/
\r  /*回车符*/
\\  /*反斜杠*/
\"  /*双引号*/
\'  /*单引号*/


泛用转义:

\接3位数表示8进制数,如:\888

\x接2位数表示16进制数,如:\x16

这两种形式一般用于表示特殊字符集中的对应字符。如:Latin-1字符集中\115和\x4d均表示字符M。

指定字面值类型

通过增加前缀或后缀可以改变整型、浮点型和字符型字面值的默认类型。

前缀(字符及字符串):

u-char16_t(Unicode16字符)

U-char32_t(Unicode32字符)

L-wchar_t(宽字符)

u8-char(UTF-8仅用于字符串字面常量)

例:

u8"hello!"
L'A'


后缀(整型及浮点):

u or U-unsigned

l or L-long

ll or LL-long long

f or F-float

l or L-long double

对整型字面值来说指定类型可以组合使用,如UL。

例:

42ULL
1E-3F
3.14159L


布尔类型字面值:ture 和false

指针字面值:nullptr
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言