《C语言程序设计与实践(第2版)》——3.5 各类数值型数据间的混合运算

简介: 例如int型与double型数据进行运算时,应先将int型的数据转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意:箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,再转换成double型。

本节书摘来自华章出版社《C语言程序设计与实践(第2版)》一书中的第3章,第3.5节,作者:凌云等著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.5 各类数值型数据间的混合运算

在C语言中,允许不同类型的数据之间进行某些混合运算。前面提到,字符型数据可以和整型通用。不仅如此,C语言还允许整型、单精度型、双精度型、字符型的数据之间进行混合运算。例如,
screenshot

是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如图3-2所示。
图3-2中横向向左的箭头表示必定的转换,如字符型(char)参加运算时,不论另一个操作数是什么类型,必定先转换为整型(int);short型转换为int型,单精度(float)型数据在运算时一律先转换成双精度(double)型,以提高运算精度(即使是两个float型数据相加,也要先转换成double型,然后再相加)。
screenshot

图3-2中纵向向上的箭头表示当运算对象为不同类型时的转换方向。例如int型与double型数据进行运算时,应先将int型的数据转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意:箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,再转换成double型。也就是说,如果一个int型数据与一个double型数据进行运算,那么应直接将int型转换成double型。同样,如果一个int型数据与一个long型数据进行运算,那么应直接将int型转换成long型。
假设i 为int型,f为float型变量。运算表达式:screenshot,运算次序依次为:
1)进行10 + 'a'的运算,'a'自动转换成整型97,然后执行相加,结果为整型值107。
2)进行screenshot的运算,首先f自动转换成double型,然后把int型的i转换成double型,两个double型数据进行算术乘,结果是double型。
3)整型值107与screenshot的积相加。由于screenshot的值是double型,先将整型数107转换成double型,然后再相加,由此最终结果为double型。
习题
3.1 写出下面赋值表达式运算后a的值,设原来的a = 10, n = 5。
screenshot

3.2 设x = 3, y = 1,下列语句执行后,m, x, y的值是多少?(各小题相互独立)
1)m = ++x - y++;
2)m = ++x - ++y;
3)m = ++x, x++;
4)m = x++, ++x;
5)m = (++x, x++);
6)m = (x++, ++x);
7)m = ++x / ++y;
8)m = x++ / y++;
9)m = x++ / ++y;
3.3 计算出下面各逻辑表达式的值,设 int a = 3, b = 4, c = 5, x;
screenshot

3.4 请编写程序,将"China"译成密码。加密方法是:把原来字母用其字典顺序后面的第4个字母替换。例如,原来'a'用'e'替换,原来'A'用'E'替换。故"China"译成密码应为"Glmre"。试编写一个程序,用赋值的方法使变量c1、c2、c3、c4、c5的值分别为'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3 、c4、c5的值分别为'G'、'l'、'm'、'r'、'e',并在屏幕上显示。
3.5 若有定义:int a = 10, b = 9, c = 8;顺序执行下列两条语句后,变量c中的值是多少?
c = (a - = (b - 5));
c = (a % 11) + (b = 3);
3.6 设x和y均为int型变量,且x = 1, y = 2,则表达式1.0 + x / y的值为多少?
3.7 设y是int型变量,请写出判断y为偶数的关系表达式。
3.8 表示整型变量a的绝对值大于5的C语言表达式是什么?
3.9 表示整型变量a不能被5或7整除的C语言表达式是什么?
3.10 表示整型变量a不能同时被5和7整除的C语言表达式是什么?

相关文章
|
6天前
|
存储 C语言 开发者
C语言性能优化技巧与实践
C语言性能优化技巧与实践
10 0
|
1天前
|
存储 算法 程序员
【C言专栏】C 语言结构体的应用与实践
【4月更文挑战第30天】C语言中的结构体是自定义数据类型的关键,它组合不同类型的數據以创建新类型,尤其适合处理复杂对象如学生信息。通过定义结构体如`struct Student`,包含名字、学号和成绩,可以方便地实例化和访问成员。结构体在链表实现、函数参数传递和数组中都有广泛应用,如表示链表节点和处理批量数据。理解并熟练运用结构体对于C语言编程至关重要,能提升代码效率和可读性。
|
2天前
|
存储 缓存 算法
C语言循环语句的探讨与实践
C语言循环语句的探讨与实践
10 1
|
2天前
|
关系型数据库 MySQL 编译器
探索C语言的魅力:从基础到实践
探索C语言的魅力:从基础到实践
13 3
|
3天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
3天前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
|
3天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
3天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
3天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
3天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)