C++ Primer Plus【复习笔记】-【处理数据】

基本类型:整数和浮点数

要点提炼:
1、整型溢出行为;
2、cout控制显示整数格式;
3、int octal_int = 042; // octal integer literal 八进制格式的赋值语句
4、如何确定定义的常量类型;
5、unsigned本身是unsigned int的缩写,因此 unsigned u_int = 2 的赋值语句正确;
6、整型:char类型 ==> 字符和小整数;
7、转义序列编码要点:在可以使用数字转义序列或符号转义序列(如\0x8和\b)时,应使用符号序列。数字表示与特定的编码方式(如ASCII码)相关,而符号表示适用于任何的编码方式,可读性更强;
8、通用字符名:universal character name. 即ISO的Unicode扩展字符集编码,如 \u00E2。在源代码中,可使用适用于所有系统的通用编码名,而编译器将根据当前系统使用合适的内部编码来表示它;
9、signed char、unsigned char、wcha_t、char16_t、char32_t;
10、字面值true和false均可以通过提升转换为int类型,true被转换为1,false被转换为0:
int ans = true; // 其值为1
任何数字值或指针值都可以被隐式转换(即不用显示强制转换)为bool值,任何非零值都被转换为true,而零被转换为false;
11、const限定符;
12、浮点数基本定义;
13、浮点常量表示;
14、C++算术运算要点:对于不同类型数值进行计算时,将把它们全部转换为同一个类型,该行为为自动转换;
15、类型转换;
16、C++中auto声明。

正文:
1、整型溢出行为:【有符号类型和无符号类型】
如图:
在这里插入图片描述
在这里插入图片描述
该行为类似里程表,若超越了限制,其值将为范围另一端的取值。

2、cout << dec、cout << hex、cout << oct,此三个命令作用为修改cout显示整数的方式,输入之后后续的int打印值将已对应的整数进制方式显示。

4、确定定义的常量类型:
默认将整型常量存储为int类型,否则可将后缀放在数字常量后面,表示类型。l或L后缀表示该整数为long常量,u或U后缀表示unsigned int常量,ul(顺序可变,大小写均可)表示unsigned long常量。
注:ull/Ull/uLL/ULL后缀表示unsigned long long类型。

6、整型:char类型 ==> 字符和小整数:
char类型专为存储字符(字母和数字)。存储字符的数值编码来存储字母,因此char类型是另一种类型。足够长能够表示目标计算机系统中的所有基本符号——所有字母、数字、标点符号等。很多系统支持的字符都不超过128个,因此用一个字节byte就可以表示所有字符。char也可以用作比short更小到的整型。

9、signed char、unsigned char、wcha_t、char16_t、char32_t:
与int不同,char默认情况下是否有符号由C++实现决定。
wcha_t:宽字符整数类型,字符或字符串前加上前缀L来表示宽字符常量和宽字符串。
C++11新增无符号类型char16_t和char32_t,使用前缀u表示char16_t字符常量和字符串常量,如u’C’和u"be good";前缀U表示char32_t常量如U‘R’和U"be good"。

11、const限定符:
const关键字来修改变量声明和初始化,关键字const叫做限定符,因为它限定了声明的含义,不允许再修改该值。
若在声明常量时未初始化值,则该常量的值将是不确定的,并且无法修改!
const比C的#define好:
(1)const明确指定类型;(2)const可以使用C++的作用域访问规则;(3)const可用于更复杂的类型,如数组或结构。
符号常量尽量会用const。

12、浮点数基本定义:
浮点数即带有小数部分的数字。计算机将这样的值分为两部分存储,一部分表示值,另一部分用于对值进行放大或缩小。如34.1245和34124.5,除了小数点位置不同外,其他相同,可以将第一个数表示为0.341245(基准值)和100(缩放因子),而将第二个数表示为0.341245(基准值相同)和10000(缩放因子更大)。
缩放因子 的作用是移动小数点的位置,术语浮点因此而得名。【小数点可移动】
C++内部表示浮点数的方法与此相同,只不过它基于二进制数,因此缩放因子是2的幂。
浮点数表示法两种:使用标准小数点表示法,或使用E表示法。如3.45E6指的是3.45与10的6次方相乘,3.45被称为尾数,6称为指数的,E大小写均可,指数可正可负。

13、浮点常量表示:
默认为double,若需要float类型则使用f或F后缀,若需要long double类型则使用后缀L大小写均可。

15、类型转换:
不同精度之间的转换可能会带来一些问题:如大精度转为小精度类型时,由于有效位数减小,值将是不确定的。
如long转为float会四舍五入,如long类型2111222333转换为float减低精度后为2.11122E6。
浮点类型转为整型,造成小数部分丢失,如int guess(3.9832) = 3,而不是四舍五入。
将较大整数转换为较小整数,如long转为short,则通常只复制右边的字节。
C++11将大括号{}初始化称为列表初始化(list-initialization)。

表达式中的自动转换:在计算表达式时,C++将bool, char, unsigned char, signed char, short值转换为int。即true转为1,false被转换为0。这些转换被称为整型提升(integral promotion)。
语句:
short chickens =20;
short ducks = 35;
short flow1 = chickens + ducks;
执行第3句时,C++程序将chickens和ducks的值转换为int,然后计算结果后将结果转换为shor类型。原因是int类型可能是计算机内运算速度最快。

不同类型进行算术运算时也会进行一些转换。如将int和float相加时,当运算涉及两种类型时较小的类型将被转换为较大的类型。

编译器通过校验表来确定在算术表达式中执行的转换。

强制类型转换两种:
(typeName) value; // C type conversion
typeName (value); // C++ type conversion
强制转换类型并不会修改value变量本身,而是创建一个新的、指定类型的值。
第二种C++新格式转换,是想让强制类型转换像函数调用。
C++还引入了四种强制类型转换运算符。static_cast<>可用于将值从一种数值类型转换为另一种数值类型。语法:static_cast (value)
C语言式的强制转换由于有过多的可能性而极其危险,而static_cast<>比传统强制类型转换更严格。

16、C++中auto声明:
让编译器能够根据初始化值的类型推断变量的类型。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值