C++ Primer读书笔记——基本内置类型

本文详细介绍了C++中的算术类型,包括整型、浮点型、无符号类型及类型转换等内容。深入探讨了各种类型的数据表示范围、字面值常量的类型指定方法,以及不同类型间的转换规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算术类型

算术类型包括整型(integral type,包括字符和布尔类型)和浮点型。

类型含义最小尺寸
bool布尔类型未定义
char字符8bit
wchar_t宽字符16bit
char16_tUnicode 字符16bit
char32_tUnicode字符32bit
short短整型16bit
int整型16bit
long长整形32bit
long long长整形64bit
float单精度浮点数6位有效数字
double双精度浮点数10位有效数字
long double扩展精度浮点数10位有效数字

bool 的取值是true(1)or false(0)
其中char的大小与一个机器字节一样,其他字符类型用于扩展字符集。

无符号类型

可通过限定词unsigned表示无符号类型,其中unsigned int 可以缩写为unsigned
例如C++中对部分类型范围的定义如下:

#define INT_MIN     (-2147483647 - 1) // minimum (signed) int value
#define INT_MAX       2147483647    // maximum (signed) int value
#define UINT_MAX      0xffffffff    // maximum unsigned int value
#define LONG_MIN    (-2147483647L - 1) // minimum (signed) long value
#define LONG_MAX      2147483647L   // maximum (signed) long value
#define ULONG_MAX     0xffffffffUL  // maximum unsigned long value

类型转换

类型所能表示的值的范围决定了转换的过程:

  • 把非布尔类型赋给布尔类型时,初始值为0则结果为false,反之为true
  • 把浮点数赋给整数时,进行了近似处理。结果仅保留小数点前的部分。
  • 给无符号类型赋值超过其表示范围时,结果是初始值对无符号类型表示数值总数取模后的余数。例如将-1赋给unsigned char后的结果是255
  • 给符号类型赋值超出表示范围时,结果是未定义的。

含有无符号类型的表达式

当一个算术表达式中既有unsigned int又有int时,int值就会被转化为无符号数(等同于将int值赋给unsigned int

unsigned u = 10;
int i = -42;
std::cout<<i+i<<std::endl;	//-84
std::cout<<u+i<<std::endl;	//INT_MAX+u-i

切勿混用带符号类型和无符号类型

字面值常量

形如42的值被称为字面值常量(literal),每个字面值常量都对应役种数据类型,字面值常量的形式和值决定了它的数据类型。

整型和浮点型字面值

0开头的整数代表8进制数;
0x0X开头的代表十六进制数。
例如:
200240x14都代表了数值20。

浮点型字面值表示为一个小树或以科学记数法表示的指数,其中指数部分用Ee表示:
3.141593.14159E00.0e0.001

字符和字符串字面值

单引号括起来的的一个字符称为char型字面值,双引号括起来的则是字符串字面值

char a = 'a'				//字符字面值
char s[12] = "Hello World!"	//字符串字面值

字符串字面值的类型实际上是由常量字符构成的array

指定字面值的类型

前缀类型说明
uchar16_tUnicode16字符
Uchar32_tUnicode32字符
Lwchar_t宽字符
u8charUTF-8
后缀类型说明
u or Uunsigned整型字面值
l or Llong
ll or LLlong long
f or Ffloat浮点型字面值
l or Llong Double

例如:3.14f= float(3.14)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值