C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强

简介: C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强

3.1.1 不同类型的数据间的混合运算

在程序中经常会遇到不同类型的数据进行运算,如5 * 4.5。如果一个运算符两侧的数据类型不同,则先自动进行强制类型转化,使二者成为同一种类型,然后进行运算。整型、实型、字符型数据间可以进行混合运算。规律为:

数据类型 转化成的类型
float和double double
int或float和double 先转化成float在转化成double
字符(char)型数据与整型数据进行运算 就是把字符ASCII代码与整型数据进行运算
例如: 12 + ‘A’,由于’A’的ASCII值是65 ,相当于12 + 65 = 77
字符型数据和实型数据 ACII值转化成double类型的数据然后进行运算

例题1:给定一个大写字母,要求用小写字母输出

int main()
{
  char c1 = 'A';//存放A的字符变量
  char c2 = c1 + 32;//将A的字符变量加32就是小写a存放到c2中
  printf("c2 = %c\n", c2);//打印得到的字符
  printf("c2 = %d\n", c2);//打印其ASCII值
  return 0;
}

运行结果:

3.2.1强制类型转化换运算符

可以利用强制类型转化运算符将一个表达式转化成所需类型。例如:

(double)a     //(将a转化成double型)
(int) (x + y)   //(将x + y转化成int类型)
(float)(5 % 3) //(将5 % 3的值换成float型)

其它一般形式为:(类型名)(表达式)

注意,表达式应该用括号括起来。如果写成

(int)x + y //则只将x转化成int,然后与y相加

3.3.1 C语句的作用和分类

3.3.2控制语句

控制语句用于完成一定的控制功能C语言只有9种控制语句,它们的形式是:

if()…else…. 条件语句
for()… 循环语句
while()…. 循环语句
do…while() 循环语局
continue 结束本次循环语句
break 中止执行switch或循环语句
return 从函数返回语
goto 转向语句,在结构化程序中基本不用goto语句

3.3.3函数调用语句

函数调用语句由一个函数用加一个分号构成,例如:

printf("This is C statement.");  
//其中printf("This is C statement.")就是一个函数调用,加一个分号成为一个语句

3.3.4表达式语句

表达式语句由一个表达式加一个分号构成,最典型的是由赋值表达式构成一个赋值语句。

例如:①a = 3 是一个赋值语句。

a = 3; 是一个赋值表达式。

因此我们可以看到,一个表达式最后加一个分号就成了一个语句。一个语句必须在最后有一个分号。

3.3.5空语句

下面就是一个空语句:

此句只有一个分号,它什么也不用做。那它的作用是什么呢?可以用来作为流程的转向点,也可以用来作为循环语句中的循环体。

3.3.6复合语句

可以用{ }把一些语句和声明括起来成为复合语句(又称为语句块)。下面是一个复合语句:

int main()
{
  float pi = 3.1415926;
  float r = 2.15;
  float area = 0.0;
  area = pi * r * r;
  printf("area = %f\n", area);
  return 0;
}

可以在复合语句中包含声明部分,中运行C99中允许将声明部分放在复合语句中的任何位置,但习惯上把它放在语句块的开头。复合语句常用在if语句或者循环语句中此时程序需要连续执行一个组语句。

3.4.1最基本的语句 --赋值语句

3.4.1.2赋值运算符

赋值符号"="就是赋值运算符,它的作用是将一个数据赋给一个变量。如a =3的作用是执行一次赋值操作(称为赋值运算)。把常量3赋给a。也可以将一个表示的值赋值给一个变量。

3.4.1.3复合的赋值运算符

在赋值符 = 之前加上其它运算符,称为复合运算符。如果在"=“之前加个”+“运算符就成了复合运算符” +="。例如,可以有以下复合赋值运算符:

a += 3    //等价于 a = a + 3
x *= y + 8  //等价于 x = x  * (y + 8)
x %= 3    //等价于 x  = x % 3

3.4.1.4赋值表达式

前面介绍过,赋值语句是在赋值表达式的末尾加上一个分号构成。那么什么是赋值表达式呢?

由赋值运算符将一个变量和一个表达式连接起来的式子称为"赋值表达式"。它的形式为: 变量 赋值运算符 表达式

赋值表达式的作用是将一个表达式的值赋给一个变量因此赋值表达式子具有计算和赋值的双重功能。如a = 3 * 5是一个赋值表达式。对赋值表达式求解的过程是:先求解赋值运算符右侧的"**表达式"**的值,然后赋给赋值运算符左侧的变量。

此外赋值运算符左侧应该是一个可修改的"左值"。左值的意思是它可以出现在赋值运算符的左侧,它的值是可以改变的。并不是任何形式的数据都可以作为左值的,左值应当为"存储空间"并可以"被赋值"。变量可以作为左值,而算术表达式a + b就不能作为左值,常量也不能作为左值,因为常量不能被赋值。

3.4.2赋值过程中的类型转换

如果赋值运算符的俩侧的类型一致,则可以直接进行赋值,如:i = 234; //已经设置i 为整型变量

(1)将浮点型数据(包括单精度,双精度)赋值给整型变量时,先对浮点数取整,即舍弃小数部分然后赋予整型变量。如果i 为整型变量,执行"i = 3.56;"的结果是使i=3

(2)将整型数据赋值给单、双精度时,数值不变,但以浮点数形式存储到变量中,如果float变量f,执行f = 23;先将整数23转化成实数23.0再按照指数形式存储在变量f中/

(3)将一个double类型的数据赋值给float变量时,先将双精度转换成为单精度,即只取6~7为有效数字,存储到float类型变量的4个字节中。应注意双精度数值大小不能超过float型变量的数值范围。例如将一个double型的变量d中的双精度实数赋给了一个float型变量f

double d = 123.456789e100;//指数为100超过了float数据的最大范围
f = d;

(4)字符型数据赋给整型变量时,将字符ASCII的值赋给整型变量。

(5)将一个占字节多的整型数据赋值给一个占字节少的整型变量或字符变量,具体讲解可以看这个链接,内容十分详细讲解了数据的存储与赋值过程中的变化:C语言中数据类型的存储

好了,今天的讲解就到这里了,如果有不好的地方希望各位多多指出,作者都会虚心接受并修改的,谢谢各位观看


相关文章
|
存储 前端开发 JavaScript
【JavaScript】浮点数精度问题
浮点数精度问题是指在计算机中使用二进制表示浮点数时,由于二进制无法精确表示某些十进制小数,导致计算结果可能存在舍入误差或不精确的情况。 这个问题主要源于浮点数的存储方式。在计算机中,浮点数通常使用IEEE 754标准来表示。该标准将浮点数分为符号位、指数位和尾数位,使用科学计数法来表示一个浮点数。
508 0
|
5月前
|
人工智能 边缘计算 算法
2025年12月数字人厂商综合实力榜单发布,揭示产业三大演进方向
2025年数字人产业告别野蛮生长,形成头部领跑、腰部深耕、创新突破的格局。权威榜单显示,技术、落地、商业与生态成核心竞争力,行业集中度提升,前十大厂商市占超65%。世优科技等凭借全栈自研与场景融合优势领先,政务、文旅、教育等垂直领域涌现特色厂商。技术迈向“形神兼备”,应用从示范走向刚需,生态标准化加速推进,数字人正深度融入千行百业,成为降本增效与价值共创的新引擎。
450 1
|
9月前
|
存储 运维 数据可视化
运维过程记录工具深度解析:从原理到实操,一文掌握核心功能与应用场景
运维过程记录是保障系统稳定的关键,缺失记录会导致问题难定位、重复发生及协作低效。通过自动化工具实现操作实时记录、集中管理与可回溯分析,可大幅提升故障排查、安全审计与团队协作效率。未来,记录工具将更智能,助力运维向高效、可控、可预测方向演进。
|
10月前
|
数据采集 人工智能 自然语言处理
NFT版权管理工具:数字艺术的守护圣殿
NFT创作者面临确权难、盗版泛滥、版税流失三大困境。通过版权锚定、盗版监测与智能合约保障,构建跨链确权、AI识别盗版、自动分账等技术工具,助力创作者守护数字资产。未来,完善版权管理将成为NFT价值核心。
|
4月前
|
存储 弹性计算 人工智能
阿里云ECS计算型c9i云服务器8核16G配置ecs.c9i.2xlarge实例规格性能测评
阿里云ECS c9i.2xlarge为第八代计算型实例,基于CIPU架构与Intel Xeon Granite Rapids处理器,8核16G内存,性能较上代提升15%。具备高并发、低延迟、稳定IOPS与网络PPS,适用Web服务、游戏前端、AI推理及数据分析等场景,支持AMX加速与安全加密,企业级应用首选。
328 0
|
4月前
|
人工智能 数据可视化 数据挖掘
2026年企业级数据可视化软件推荐,选对BI工具提升决策效率
瓴羊Quick BI是阿里云旗下企业级数据可视化工具,助力各规模企业高效挖掘数据价值。支持多源数据接入、拖拽式操作与自然语言查询,具备AI分析、亿级数据秒级响应、跨部门协同等能力,广泛应用于零售、制造等行业,获Gartner连续六年推荐及ISO27001认证,提供SaaS与混合云灵活部署。
|
6月前
|
移动开发 小程序 前端开发
告别年费,拥抱源码:一次投入,用Uni+Php源码搭建属于你自己终身的圈子小程序/H5/App
本文详解源码自建全流程:后端通过Git部署,配置数据库与OSS,优化PHP、Nginx及MySQL性能;前端支持小程序与H5,分别编译调试并发布。附技术架构图,涵盖前后端技术栈,助力高效搭建。
|
运维 数据安全/隐私保护
Finalshell 私钥连接服务器
Finalshell 私钥连接服务器
1777 0
|
9月前
使命召唤12进不去?显示找不到steam_api64.dll
使命召唤12进不去?显示找不到steam_api64.dll
1125 1