新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言中的运算符表达式

发布时间:2026/11/5 14:57:50来源:尧图网络
C语言中的运算符表达式
1.算术表达式1概念算术表达式是用运算符号将常量、变量以及数学函数连接起来的式子。2算术运算符又分双目运算符和单目运算符两种。每个运算符都要处理两个操作数即运算数操作数可以是常量、变量或者其他算数表达式操作数分别位于运算符的左右两边这里使用的是双目运算符。单目运算符分增量运算符和减量运算符其只需要一个操作数它可以位于运算符的任意一侧但是表达的含义不同。其算术运算符如下表1.1表1.1 算术运算符注1两个整数类型的数据做除法运算时结果只保留整数部分。如2/30。2只有整数类型才能进行取余运算其结果是两数整除后的余数。如9%22。3自增和自减运算符只适用于变量且变量可以位于运算符的任意一侧但各有不同的效果。例如int a1 2,a2 2; int b (a1)*2; //等价于a1 a1 1; b a1 * 2; int c (a2)*2; //等价于c a2 * 2;a2 a2 1;其结果为b 6,c 4。原因是a1表示在使用变量a1之前,a11,然后使用新值进行运算即先加1在使用而a2表示先试用a2的原值待使用完之后在进行a21,即先使用再加1。但是这三个语句执行完后a1和a2的值都为3。3算术运算符的优先级其优先级是指当一个表达式中出现不同的算术运算符时执行运算的优先次序。如表1.2列出了算术运算符的优先级。表1.2算术运算符的优先级在书写表达式时应注意1写表达式时若记不清其优先顺序可以通过括号改变优先级的次序。2在书写表达式时若表达式过长可以分为几个表达式来写。3在一个表达式中最好不要连续使用两个表达式如ab。这种会让人混淆应该是(a)b,还是a(b)。这种情况可以使用括号进行分组或者用空格符是空格符‘ ’而不是空隔符‘\0’。2.赋值表达式1强制类型转换在学习赋值表达式前先学习以下什么是强制类型转换。定义强制类型转换是指当一个表达式中出现的各种变量或者常量的数据类型不同时需要进行的数据类型转换casting conversation。无论在C语言中还是java语言中数据类型的转换都分为隐式类型转换和显示类型转换这两种形式。1隐式类型转换对于由双目运算中的算术运算符组成的表达式一般要求运算符两边的操作数类型一致如果不一致系统会自动转换为较高的类型即取值范围较大。隐式类型转换遵循的是精度不降低的标准即短型向长型转换低精度向高精度转换。其规则如下2)强制类型转换表达形式为data_typeexpressioon;例如int a4,b0; double c3.14; s a (int)c;可知c的类型为double,然而s是int类型将int放在c前面就是将c 的类型强制转换成int类型先将c中的数据截取小数部分让整数部分与a 进行加法运算故c3最后将7赋值给s。在整个转换过程中并没有改变c的类型以及取值可见显示类型的转换是暂时的。注强制类型转换有副作用避免其的方法如下1避免两个整数进行相除整数相除会导致相除结果的小数部分丢失。2在进行强制类型转换的过程中如想实现小数的四舍五入先给被转换的变量0.5然后再实施强制类型转换如(int)(x0.5)。2赋值表达式由赋值运算符组成的表达式称为赋值表达式。1赋值运算符“”——赋值运算符的作用是将赋值运算符右边的数据或者表达式的值赋给运算符左边的变量。注赋值号左边必须是变量。例如double s 6.5 33;//是将表达式6.533赋值给变量s.2)赋值中的类型转换在赋值表达式中如果两侧的数据类型不一致但赋值符左边的数据类型较高系统会自动进行隐式类型转换若赋值运算符左边的变量的数据类型低于右边表达式的类型就必须进行显示类型转换否则编译时会报错。3复合赋值运算符也就是在运算符“”前面加上其他的运算符构成复合赋值运算符。如表1.3表1.3 C语言中的复合赋值运算符复合赋值运算符举例等效于xyxxy-x-yxx-y*x*yxx*y/x/yxx/y%x%yxx%y3.关系表达式利用关系运算符连接起来的式子称为关系表达式。也就是我们所说的比较运算用于对两个表达式进行比较判断比较的结果是否满足给定的条件。C语言中提供了6个关系运算符如表1.4表1.4 关系运算符4.逻辑运算符C语言中提供了3中逻辑运算符如表1.5表1.5 逻辑运算符运算符0含义实例非!(a5),表示a不大于等于5即小于5与x0 x5,表示0≤x≤5||或x5 || x0,表示x≥5或者x≤0逻辑非运算符“”是一个一元运算符紧跟其后的表达式的值为0时它的运算结果为1否则运算结果为0逻辑与运算符“”是一个二元运算符它两边表达式的值均为1时整个逻辑运算的结果为1有一个为0时则整个运算结果为0即有0则0全1才为1逻辑或运算符“||”是一个二元运算符它两边表达式的值均为0时整个逻辑运算结果为0有一个1整个逻辑运算结果为1。即有1为1全0才为05.各类运算符的优先级关系从上图可以看出括号“”运算的优先级别最高赋值运算符的优先级别最低。表中上面未提及的指针运算符“*”在后面将指针的时候会细讲它的用法等以及取地址运算符“”都涉及指针那块知识sizeof()用于计算数据类型或对象在内存空间中所占用的字节数。表中的下表运算符“[]”用于访问数组元素或指针所指向的内存位置。成员运算符“-”用于通过指针访问结构体或联合体的成员“.”用于访问结构体或联合体变量的成员其用法将在后面学习相关知识时细讲。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/4 22:55:41

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/5 4:24:57

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/5 4:24:57

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉