August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
表达式中允许存在不同的数据类型。例如,2.5/2是一个double类型除以一个int类型。这表示什么呢?我们应该做整型除法还是双精度浮点型除法呢?整型除法时余数被丢弃,例如5/2的结果为2。浮点型除法时余数被保留,例如5.0/2.0是2.5。“2.5/2是整型除法还是浮点型除法?”的答案是“浮点型除法,因为整型除法会丢失余数”。也就是说,2.5/2的结果是1.25而不是1。我们遵循这样的规则:如果算术表达式中有double类型数据的话,就进行浮点型算术计算,结果为double类型;否则就使用整型算术计算,结果为int类型。例如:
记号type(value)和type{value}表示“将value转换为type类型,就像用值value来初始化type类型的变量一样”。这意味着,编译器会把上述运算中的int自动转换为double,或将char自动转换为int。使用type{value}可避免窄化转换(3.9.2节),而type(value)不能。在运算完成的时候,编译器可能还得再进行一次转换,以用来作为初始化值或赋值语句的右端项。例如:
需要特别注意浮点运算表达式中的整数除法。例如,摄氏温度与华氏温度的转换公式为:f=9/5×c+32,程序代码如下:
不幸的是,上述程序不能正确实现摄氏温度与华氏温度的转换功能,因为9/5的值是1而不是我们期望的1.8。如果要达到我们期望的结果,必须将9或5(或者两者)转换为double类型。 ...