【C语言督学训练营 第三天】C语言的运算符与表达式
文章目录
- 运算符分类
- 1.算术运算符
- 2.关系运算符
- 3.逻辑运算符与逻辑表达式
- 4.其余运算符
- 运算符的优先级
运算符分类
总体可以认为运算符分为以下几类:算术运算符、关系运算符、逻辑运算符、其余运算符,运算符的样子长下面这样:
其中着重号标注的需要熟练掌握用法。
算术运算符(+ \- * / %)
关系运算符(> < == >= <= !=)
逻辑运算符(! && ||)
- 位运算(<< >> ~ | ^ &)
赋值运算符(=及扩展运算符又称复合运算符)
- 条件运算符(又称三目运算符 xxx?x1:x1)
- 逗号运算符(,) 外部这个括号是必须的
- 指针运算符 * &
求字节运算符 sizeof
强制类型转换运算符 (类型)xxx
- 分量运算符(又称成员运算符) -> .
- 下标运算符 []
- 其他 函数调用运算符 ()
看完运算符分类,下面是运算符使用时需要注意的一些点。
1.算术运算符
可以进行加、减、乘、除、取余运算,使用方法与数学中无异。
值得注意的是:
- 除法运算符在使用的时候如果除数与被除数均是整数那么整除后的结果会向下取整。
- 取余时余数的正负号只与被除数有关(可以由以下代码验证)
#include"stdio.h"
int main()
{//%的运算对象只能是整数printf("%d\n", 7 % 3);//输出结果为1printf("%d\n", 7 % -3);//输出结果为1printf("%d\n", -7 % 3);//输出结果为-1printf("%d\n", -7 % -3);//输出结果为-1//a%b余数的正负号只与a的正负有关return 0;
}
通常加减乘除运算会与其余运算符一块使用,每一个算术运算表达式都最终都可以化为一个值。
2.关系运算符
关系表达式的值只有真或假,由于C语言中没有布尔类型
,通常会使用0代表假、非零代表真即非零即一
,关系运算符的优先级小于算术运算符的优先级。在使用关系运算符时需要严格注意==不要写成=,大于小于不要写成<<>>。下面两个例子就是反例:
- 把==写成=(条件会出错)
#include"stdio.h"
int main()
{int i;//%的运算对象只能是整数printf("%d",i=2);//a%b余数的正负号只与a的正负有关return 0;
}
结果:
与变量的值有关
- 判断时==连写例如5==5==5 或者 把a大于3小于5写成3<a<5
#include <stdio.h>int main() {printf("5==5==5 result:%d\n",5==5==5);printf("5<10<5 result:%d",5<10<5);return 0;
}
结果:
5==5==5 result:0
5<10<5 result:1
3.逻辑运算符与逻辑表达式
这里值得注意的是逻辑非的运算级最高,逻辑或与逻辑与相同优先级但低于关系运算符,逻辑表达式与关系表达式一样,结果只有真或假,逻辑表达式通常写进分支语句或者循环语句中。逻辑运算符有一个特性:短路机制。
规则如下:
- 或运算时前置项为真时发生短路,逻辑表达式直接为真
- 且运算时前置项为假时发生短路,逻辑表达式直接为假
示例:可以看出下面代码并没有执行打印操作
#include <stdio.h>int main() {int i=0;i&&printf("5==5==5 result:%d\n",5==5==5);return 0;
}
4.其余运算符
这里着重说一下赋值运算符与sizeof运算符。其余的运算符后面会说到
- 赋值运算符
赋值运算符是未来我们写代码的时候最常用的运算符之一,赋值运算符的左端必须是左值,也就是有内存地址的变量,不可以是右值也就是常量,否则会引发编译错误。除此之外赋值运算符还包含符合赋值运算符 += -= *= /=这些运算符也是算术运算符的一种简写方式,可以提高阅读代码与程序执行的效率。 - sizeof运算符,这个其实是一个运算符并不是一个函数。
运算符的优先级
可以参考以下一个图表。
注意:同一优先级运算符,运算次序由结合方向决定。不同级别优先级遵循以下规则:!>算术运算符>关系运算符>&&>||>赋值运算符。
【C语言督学训练营 第三天】C语言的运算符与表达式相关推荐
- 【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出
文章目录 一.前言 二.数据类型 1.基本数据类型 ①.整形 ②.浮点型 ③.字符型 2.高级数据类型 3.数据分类 ①.常量 ②.变量 三.标准输入输出 1.scanf 2.printf 四.进制转 ...
- c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...
1.第2章 数据类型.运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称,数值.字符.文本等都是数据,在各种程 ...
- 实验c语言程序数据类型,C语言程序设计实验报告——实验2--数据类型、运算符和表达式.doc...
C语言程序设计实验报告--实验2--数据类型.运算符和表达式.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档 ...
- C语言程序设计上机前三题,C语言程序设计(含上机实验与习题解答)
本书根据作者多年来教授不同基础学员的经验,针对初学者的特点,由浅入深,从一般程序设计语言的共性到C语言自身的特性,从C语言的语法规则到其内部实现,对C语言进行了系统的介绍. 全书分上.下两篇.上篇介绍 ...
- C语言实验指导(三)C语言AD连续采集数据实验
第三章:C语言AD连续采集数据实验 文章目录 第三章:C语言AD连续采集数据实验 一.实验目的: 1.熟悉示波器和信号发生器的使用. 二.实验内容: 1.利用信号发生器产生一定频率的正弦波,并用示波器 ...
- c语言trave函数,(三)C语言之字符串与字符串函数
温馨提示 写博客是为了记录在开发过程中所涉及到的技术以及遇到的问题的解决,如果该博客对您有所帮助,希望可以点个关注/喜欢:如果您对文章中的内容有什么不同的见解,欢迎留言进行讨论.谢谢! (三)C语言之 ...
- c语言逆序数输三个数,C语言求助!一个三位数的逆序数,总是编不对
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int main() { int n,a,b,c,sum,ge,shi,bai; printf(&q ...
- c语言将一个字符输出三遍,C语言字符相关部分内容小结
很多初涉编程的同学,在有些知识点上不够系统化或者说不能够将知识点联系起来,甚至对有些知识点有妖魔化的趋势,先说一下,这点是完全没有必要的,对于程序的编写,我个人认为这是一件很有美感的事情,所以不必预先 ...
- c语言黑洞数程序三位,C语言5位黑洞数
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456.求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则 ...
最新文章
- php使用CURL不依赖COOKIEJAR获取COOKIE的方法
- 序列、触发器和存储过程三者之间有啥关系
- asp.net core 自定义 Content-Type
- Django Web实现动态三级联动
- 你听过哪些匪夷所思的故事?
- OSPF 传播默认路由
- 多元统计分析基于r课后答案_应用多元统计分析课后答案.doc
- 学科分类号 计算机技术,学科分类号 0806.DOC
- 重写与重载(摘抄笔记)
- php导出页面为pdf文件大小,PHP HTML 生成 PDF|php快速导出pdf文件
- 【多媒体基础知识】 --- 什么是流媒体技术
- 有域名和服务器怎么建设网站新手,新手如何快速搭建一个新的网站【零基础】...
- 电容倍增器作为电源滤波器
- “我不是坚强,我只是走投无路”,从职高到杭电、浙大、麻省计算机博士!...
- MS08_067复现+远程控制
- 基于Python多元线性回归、机器学习、深度学习在近红外光谱分析中的实践应用培训班
- 1N系列常用整流二极管的主要参数
- #python#模拟登录超星
- 蓝海创意云丨刺杀小说家:中国第一部大规模用虚拟拍摄的真人电影
- shell脚本——xsync
热门文章
- FLOW-3D网格划分看运气?
- Vue项目中使用swiper插件开发3d轮播图
- Oracle课堂笔记之事务集合查询与PL/SQL匿名块(3)(实验习题)
- 有一天我也会老去(写在2013年父亲节)
- AKVIS OilPaint(油画处理软件) v7.0.583
- 3星|《财经天下周刊》2017年21期:海外购几乎是亚马逊中国的最后一根救命稻草...
- c语言break(c语言break是什么意思)
- 当你全力以赴世界也会为你让路,23级人大女王金融硕士准备中
- 建筑市场监管平台解密
- 【立创开源】N32G430C8L7最小系统板