C++基本数据类型

算数类型

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

布尔类型(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值