【谭浩强C程序设计精讲 5】运算符和表达式

news2025/4/22 4:31:48

文章目录

    • 3.3 运算符和表达式
      • 3.3.1 C运算符
      • 3.3.2 基本的算术运算符
      • 3.3.3 自增(++)、自减(--)运算符
      • 3.3.4 算术表达式和运算符的优先级与结合性
      • 3.3.5 不同类型数据间的混合运算
      • 3.3.6 强制类型转换运算符

3.3 运算符和表达式

3.3.1 C运算符

在这里插入图片描述

3.3.2 基本的算术运算符

运算符含义举例结果说明
+正号运算符+ aa 的值单目运算符
-负号运算符- aa 的算术负值单目运算符
*乘法运算a * ba 和 b 的乘积由于键盘无 × 号,所以用 * 代替
/除法运算符a / ba 除以 b 的商由于键盘无 ÷ 号,所以用 / 代替。
两个实数相除的结果是双精度实数;
两个整数相除的结果为整数,如 5/3=1,舍去小数部分。
但是,除数或者被除数有一个为负值,舍入的方向不确定。
%求余运算符a % ba 除以 b 的余数要求参加运算的运算对象为整数,结果也是整数。如 8%3=2
+加法运算符a + ba 和 b 的和
-减法运算符a - ba 和 b 的差

示例1:

#include <stdio.h>
int main(void)
{
    int a,b,d;
    double c;
    a = 5/3;
    b = -5/3;  
    c = 5.0/3.0;
    d = 5%3;
    printf("5/3=%d\n-5/3=%d\n5.0/3.0=%lf\n5%%3=%d\n",a,b,c,d);
    return 1;
}

运行结果(你的运行结果可贴在评论区):
在这里插入图片描述

3.3.3 自增(++)、自减(–)运算符

  • 自增(++)、自减(–)运算符的作用是使变量的值加 1 或减 1。
运算说明
++i,–i在使用 i 之前,先使 i 的值加(减)1
i++,i–在使用 i 之后,使 i 的值加(减)1

示例2:

#include <stdio.h>
int main(void)
{
    int i,j1,j2;
    i=3;
    j1 = ++i;    //i的值先变成4,再赋值给j1
    printf("i=%d,j1=%d\n",i,j1);
    i=3;//思考一下这里为什么要重新设置为3,如果去掉这一句之后,对下面的计算结果有什么影响?
    j2 = i++;    //先将i的值赋给j2,i的值再变成4
    printf("i=%d,j2=%d",i,j2);
    return 1;
}

运行结果:
在这里插入图片描述

3.3.4 算术表达式和运算符的优先级与结合性

  • C 算术表达式:用算术运算符括号运算对象(也称操作数)连接起来的、符合 C 语法规则的式子。

    运算对象包括:常量、变量、函数等。如:a*b/c-1.5+‘a’

  • C 语言规定了运算符的优先级结合性

    • 在表达式求值时,先按运算符的优先级别顺序执行

    如表达式 a-b*c,由于乘号优先级高于减号,因此要先计算 b*c,再被 a 减。

    • 如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。

    如表达式 a-b+c,由于加号和减号的优先级相同,则按“自左至右”(左结合性)顺序,先计算 a-b,再加 c。
    如赋值运算 a=b=c,则按“自右至左”(右结合性)顺序,先将 c 的值赋给 b,再将 b 的值赋给 a。

  • 下图表是C列出的所有运算符以及它们的优先级和结合性,供读者参阅。(注意:常用的算术运算符记住自左至右,赋值运算符自右至左,特殊的位运算符和逻辑运算符,图中有标红。不用死记硬背,常用的不用背就会,复杂些的用到时查表即可。
    在这里插入图片描述

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

如果一个运算符两侧的数据类型不同,则先自动进行类型转换,使二者成为同一种类型,然后进行运算

  • 整型、实型、字符型数据间可以进行混合运算,规律如下:

    • (1)+、-、*、/ 运算的两个数中有一个数为 float 或 double 型,结果是 double 型(因为前面也讲过浮点型数据运算的结果是双精度型)。系统将所有的 float 型数据先转换为 double 型,然后再进行运算。
    • (2)如果 int 型与 float 或 double 型数据进行运算,先把 int 型 和 float 型转换为 double 型,然后进行运算,结果是 double 型。
    • (3)字符(char)型数据与整型数据进行运算,就是把字符的 ASCII 代码与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的 ASCII 代码转换成 double 型,再进行运算。
  • 以上规则是编译系统自动完成,无需用户干预

  • 分析以下表达式,i 为整型变量,f 为 float 型变量,d 为double 型变量。
    在这里插入图片描述

示例3:

#include <stdio.h>
/*
功能要求:给定一个大写字母A,要求用小写字母a输出
分析:字符参与运算实则是其ASCII代码参与运算,通过查表可知,A的ASCII是65,a的ASCII代码是97,相差32
*/
int main(void)
{
    char c1,c2;
    c1='A';             //将字符'A'的ASCII代码放到c1变量中
    c2=c1+32;           //得到字符'a'的ASCII代码,放在c2变量中
    printf("%c\n",c2);  //输出c2的值,是一个字符
    printf("%d\n",c2);  //输出c2的值,是字符'a'的ASCII代码
    return 0;
}

运行结果:
在这里插入图片描述

3.3.6 强制类型转换运算符

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

例如:

  • (double)a (将 a 转换成 double 型)
  • (float)(5%3) (将 5%3 的值转换成 float)
  • (int)(x+y) (将 x+y 的值转换成 int 型)
  • (int)x+y (将 x 转换成整型,然后与 y 相加)
  • 说明:在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。

本节完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1346095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java强软弱虚引用

面试&#xff1a; 1.强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用分别是什么&#xff1f; 2.软引用和弱引用适用的场景&#xff1f; 3.你知道弱引用的话&#xff0c;能谈谈WeakHashMap吗&#xff1f; 目录 一、Java引用 1、强引用&#xff08;默认支持模式…

GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库

目前&#xff0c;GBASE南大通用已与阿里云计算巢合作&#xff0c;双方融合各自技术优势&#xff0c;助力企业用户实现云上数据仓库的自动化部署&#xff0c;让用户在云端获取数据仓库服务“更简单”&#xff0c;让用户在云端使用数据仓库服务“更便捷”&#xff0c;满足企业用户…

条件编译处理多端差异

条件编译https://uniapp.dcloud.net.cn/tutorial/platform.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9%E6%9D%A1%E4%BB%B6%E7%BC%96%E8%AF%91%E5%A4%84%E7%90%86%E8%B7%A8%E7%AB%AF%E5%85%BC%E5%AE%B9 <template><view class"container"><…

数模学习day05-插值算法

插值算法有什么作用呢&#xff1f; 答&#xff1a;数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模拟产生”一些…

【SpringCloud笔记】(12)分布式请求链路跟踪之Sleuth

Sleuth 背景 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最后的…

【基础】【Python网络爬虫】【2.请求与响应】常用请求报头和常用响应方法

Python网络爬虫基础 爬虫基础请求与相应HTTP/HTTPS 协议HTTP/HTTPS的优缺点HTTP 的缺点HTTPS的优点 请求与响应概述请求请求目标&#xff08;url&#xff09;请求体&#xff08;response&#xff09;常用的请求报头查看请求体&#xff08;requests 模块&#xff09; 响应HTTP响…

DsPdf:GcPdf 7.0 for NET Crack

DsPdf:GcPdf 7.0 用于全面文档控制的功能丰富的 C# .NET PDF API 库 PDF 文档解决方案&#xff08;DsPdf&#xff0c;以前称为 GcPdf&#xff09;可让您快速、高效地生成文档&#xff0c;且无需依赖任何内存。 在 C# .NET 中生成、加载、编辑和保存 PDF 文档 支持多种语言的全…

Python数值型字符串校验

从键盘输入一行字符串&#xff0c;编写Python代码判定字符串是python“合法”数值。 (笔记模板由python脚本于2023年12月25日 18:00:52创建&#xff0c;本篇笔记适合熟悉Python符串基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.py…

Java集合/泛型篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、什么Set集合二、HashSet( Hash 表)三、什么是TreeSet(二叉树)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

【HDFS联邦(2)】HDFS Router-based Federation官网解读:HDFSRouterFederation的架构、各组件基本原理

文章目录 一. 介绍二、HDFS Router-based Federation 架构1. 示例说明2. Router2.1. Federated interface2.2. Router heartbeat2.3. NameNode heartbeat2.4. Availability and fault toleranceInterfaces 3. Quota management4. State Store 三、部署 ing 本文主要参考官网&am…

从马尔可夫奖励过程到马尔可夫决策到强化学习【01/2】

一、说明 关于马尔可夫过程&#xff0c;如何将马尔可夫决策转化成决策依据&#xff0c;这里介绍的基本的思想路径&#xff0c;为读者将来设计和应用决策模型提供理论上的参考。 这是了解强化学习的一系列基础文章的后续文章。如果您有兴趣了解强化学习&#xff0c;请查看此处。…

秒杀系统的设计思路(应对高并发,超卖等问题的解决思路)

首先我们先看一下设计秒杀系统时&#xff0c;我们应该考虑的问题。 解决方案&#xff1a; 一.页面静态化结合CDN内容分发 前端把能提前放入cdn服务器的东西都放进去&#xff0c;反正把所有能提升效率的步骤都做一下&#xff0c;减少真正秒杀时候服务器的压力。 秒杀活动的页面…

day5--java基础编程:异常,内部类

6 异常 6.1 异常概述 出现背景&#xff1a; 在使用计算机语言进行项目开发的过程中&#xff0c;即使程序员把代码写得尽善尽美&#xff0c;在系统的运行过程中仍然会遇到一些问题&#xff0c;因为很多问题不是靠代码能够避免的&#xff0c;比如:客户输入数据的格式&#xff0c…

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.【EI级】 Matlab实现TCN-BiGRU-Mult…

petalinux

基于网络参考&#xff0c;运行一个xilinx pcie rc的参考&#xff0c;选择vcu118平台&#xff08;基于microblaze&#xff09;&#xff1a;该参考通过pcie rc对挂在的外部ssd进行读写测试 Zynq PCI Express Root Complex design in Vivado - FPGA Developer 1&#xff0c;安装…

使用YOLOv8和Grad-CAM技术生成图像热图

目录 yolov8导航 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; 概述 环境准备 代码解读 导入库 定义letterbox函数 调整尺寸和比例 计算填充 应用填充 yolov8_heatmap类定义和初始化 后处理函数 绘制检测结果 类的调用函数 热图生成细节 参数解释 we…

Netty(一)-NIO

一、Netty 现在的互联网环境下&#xff0c;分布式系统大行其道&#xff0c;而分布式系统的根基在于网络编程&#xff0c;而Netty恰恰是Java领域网络编程的王者。如果要致力于开发高性能的服务器程序&#xff0c;高性能的客户端程序&#xff0c;必须掌握Netty。 1、NIO NIO&…

鸿蒙(OpenHarmony)系统之智能语音部件(1)

本文重点参考&#xff1a; OpenHarmony/ai_intelligent_voice_framework 一、总体概述 1. 功能简介及架构 智能语音组件包括智能语音服务框架和智能语音驱动&#xff0c;主要实现了语音注册及语音唤醒相关功能。 智能语音组件架构图如下图所示&#xff1a; &#xff08;1&a…

分库分表之Mycat应用学习四

4 分片策略详解 分片的目标是将大量数据和访问请求均匀分布在多个节点上&#xff0c;通过这种方式提升数 据服务的存储和负载能力。 4.1 Mycat 分片策略详解 总体上分为连续分片和离散分片&#xff0c;还有一种是连续分片和离散分片的结合&#xff0c;例如先 范围后取模。 …

弱电工程计算机网络系统基础知识

我们周围无时无刻不存在一张网&#xff0c;如电话网、电报网、电视网、计算机网络等&#xff1b;即使我们身体内部也存在许许多多的网络系统&#xff0c;如神经系统、消化系统等。最为典型的代表即计算机网络&#xff0c;它是计算机技术与通信技术两个领域的结合。 计算机网络的…