《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语言表达式是什么?

相关文章
|
21天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
29天前
|
存储 C语言 C++
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
|
1月前
|
C语言 定位技术 API
【C语言】实践:贪吃蛇小游戏(附源码)(二)
【C语言】实践:贪吃蛇小游戏(附源码)
【C语言】实践:贪吃蛇小游戏(附源码)(二)
|
29天前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储
|
30天前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
2月前
|
存储 C语言 数据格式
【C语言基础考研向】03混合运算和printf讲解
本文分为两部分。第一部分介绍了C语言中的混合运算与类型强制转换的重要性,通过实例展示了当整型数进行除法运算且结果为小数时,必须使用类型转换才能正确存储浮点数结果。第二部分详细讲解了`printf`函数的功能与使用方法,包括格式化输出不同类型数据的基本语法,并通过具体示例演示了如何利用字段宽度和对齐方式来控制输出格式,帮助读者更好地理解和掌握输出格式的控制技巧。
44 10
|
1月前
|
C语言
【C语言】实践:贪吃蛇小游戏(附源码)(三)
【C语言】实践:贪吃蛇小游戏(附源码)
|
1月前
|
存储 API C语言
【C语言】实践:贪吃蛇小游戏(附源码)(一)
【C语言】实践:贪吃蛇小游戏(附源码)
|
1月前
|
存储 编译器 C语言
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
34 0
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践