August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
安全的转换对程序员通常是一个福音,它可以简化代码编写。不幸的是,C++也允许(隐式的)不安全转换。所谓的不安全,我们的意思是一个值可以转换成一个其他类型的值,这个值不等于原始的值。例如:
这种转换又被称为“窄化”转换,这是由于它们将一个值放入一个对象,这个对象可能太小(“狭窄”)以至于不能存放这个值。不幸的是,只有少数编译器会警告将char初始化为int的不安全。这里的问题是一个int通常比一个char大,因此(在这种情况下)它可以保存一个并不能表示char的int值。尝试执行这个程序,查看你计算机中的值b(常见的结果是32);更进一步,完成实验:
我们使用while语句允许尝试很多值,这个语句将在4.4.2.1节中解释。
试一试
输入各种各样的值来运行这个程序。尝试小的值(例如2和3);尝试大的值(大于127、大于1000);尝试负值;尝试56;尝试89;尝试128;尝试非整型值(例如56.9和56.2)。除了展示在你的机器中如何从double转换成int,以及如何从int转换成char,本程序还显示了对给定整型值,你的机器会输出哪个字符(如果有的话)。 ...