C++ Primer学习—2.1基本内置类型

本文详细介绍了C++中的基本内置数据类型,包括整型、字符型、浮点型等,并探讨了算术类型、类型转换及字面值常量等内容。

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


内容摘要

C++基础→变量和基本数据类型→2变量与基本类型→2.1基本内置类型

2.1、基本内置类型

C++定义了数据基本内置类型:整型、字符型、浮点型等,同时提供了自定义数据类型的机制。

算术类型

算术类型分两类:整型(字符、布尔型)、浮点型
布尔类型:bool(true or false)
字符类型:char、wchar_t、char16_t、char32_t
整型:short、int、long、long long(C++ 11)
浮点型:float、double、long double

除去布尔,其他整型从符号的角度,可分为带符号的signed与无符号的unsigned。默认为带符号的,添加unsigned得到无符号类型。

字符型则分为:char、signed char、unsigned char三种。char表现形式是有符号还是无符号,是由编译器决定的。

类型转换

当在程序的某处使用了一种类型其实对象应该是另一种类型时,程序会自动进行类型转换。下表是强行赋值时的情况。

操作结果
非布尔算术值→布尔型0→false,否则为true
布尔值→非布尔类型false→0,true→1
浮点数→整数类型近似出力,保留浮点数小数点前的部分
整数值→浮点类型小数部分记为0,可能损失精度
赋给无符号类型一个超出它表示范围的值初始值对无符号类型表示数值总数取模后的余数(如8bit大小的unsigned char可以表示0-255区间内的值,如果赋了区间外的值,实际结果是该值对256取模后所得余数)
赋给带符号类型一个超出它表示范围的值结果是未定义的,可能继续工作,可能崩溃,可能生成垃圾数据

含无符号类型的表达式
int型 + unsigned 型 输出结果是int转化为unsigned数后的执行结果,如-1(int)* 1(unsigned) = 4294967295
两个unsigned数相减 结果是取模后的值,如10 - 42 = 4294967264
· 总之,含无符号的运算,要确保结果不能是负值,同时不要混用带符号类型与无符号类型

字面值常量

布尔字面值 true和false
指针字面值 nullptr
整型字面值可写作十进制数、八进制数(以0开头)、十六进制数(以0x或0X开头)的形式,整型字面值具体的数据类型由它的值和符号决定。

十进制八进制十六进制
200240x14
带符号数带符号或无符号-
int、long、long long中能容纳其值得尺寸最小者int、unsigned int、long、unsigned long、long long、unsigned long long中能容纳数值的尺寸最小者同左

注:short没有对应的字面值; 十进制字面值不会是负数。

浮点型字面值表现为一个小数或以科学计数法表示的指数。
默认,浮点型字面值是double。

3.141593.14159E00.0e0.001

字符型字面值是由单引号括起来的一个字符,‘a’,字符串型字面值是由双引号括起来的零个或多个字符,“Hello World! ”。
注:编译器在每个字符串的结尾处添加一个空字符’\0’,字符串字面值得实际长度要+1;

转义序列
有两类字符不能直接使用:1.不可打印的字符,退格等无可视的图符;2.C++中有特殊含义的字符,单引号、双引号、问号、反斜线等,C++中规定的转义序列见下表,这些字符序列被当做一个字符使用。

换行符横向制表符报警符纵向制表符退格符双引号反斜线问号单引号回车符进纸符
\n\t\a\v\b"\?\r\f

也可以使用泛化的转义序列,\x加一个或多个十六进制数,或\加1个、2个或3个八进制数。

响铃换行符空格空字符字符M字符M
\7\12\40\0\115\x4d

注:如果反斜线后的八进制数超过3个,只有前3个构成转义序列。

指定字面值的类型
通过添加前缀或后缀,可以改变字面值类型
L’a’ 宽字符型,wchar_t
u8"hi!" utf-8字符串
42ULL 无符号整型
1E-3F 单精度浮点型,float
3.14159L 扩展精浮点型, long double
用于指定字面值类型的前缀或后缀如下表。

字符和字符串字面值:

前缀含义类型
u Unicode16字符char16_t
U Unicode32字符char32_t
L宽字符wchar_t
u8 UTF-8-char

整型和浮点型字面值:

后缀最小匹配类型
u or Uunsigned
l or Llong
ll or LLlong long
f or Ffloat
l or Llong double
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值