C 运算符与表达式
运算(操作)是对数据的加工。最基本的运算形式常常可以用一些简洁的符号来记忆,这些符号称为运算符或操作符。被运算的对象-数据称为运算量或操作数。表达式描述了对哪些数据、以什么顺序以及施加什么样的操作。运算量可以是常量,也可以是变量,还可以是函数。
C语言中提供了丰富的运算符,能够构成多种表达式,它把许多基本操作都作为运算符处理。例如,C语言把赋值符作为赋值运算符。
学习运算符时应该注意以下几点:
(1)运算符的功能。
(2)运算符与运算量的关系。
(3)运算符的优先级。
(4)运算符的结合性。
(5)运算的结果类型。
2.3.1 算术运算
1.双目算术运算符:+ 、- 、* 、/ 、%
(1)功能:+、-、*、 /、 %的功能分别是加、减、乘、除、求模。
(2)优先级:*、 /、 %同级别,+、- 同级别但低于 *、 /、 %。
(3)结合性:左结合性。
(4)结果类型:相同类型的数据的运算结果仍为相同类型,不同类型的数据的运算结果为类型较高的一种类型。
(5)自反算术赋值运算符:+=、-=、*=、/=、%=
(1)结合性:右结合性。
(2)优先级:同赋值运算符的优先级。例如,b*=a+2等价于b=b*(a+2),而不等价于b=b*a+2。
注意:C语言的简洁性提高了程序的效率,但也造成了阅读与理解程序的困难。我们建议有限制地使用自反算术运算符,或者只在不会造成误解的地方使用,或者用圆括号加以说明。
2.自加和自减运算符:++、--
(1)前缀形式:先增值后引用。例如,设变量x的值为2,则执行赋值表达式y=++x后变量x和y的值分别为3和3。
(2)后缀形式:先引用后增值。例如,设变量x的值为2,则执行赋值表达式y=x++后变量x和y的值分别为3和2。
(3)优先级:优先级比较高,高于双目或三目运算符。
(4)结合性:右结合性。
注意:自加自减运算符的运算对象只能是整型变量而不能是表达式或常量。例如,5++和(x+y)++都是错误的表达式。
3.正负号运算符:+、-
正负号运算符属于单目运算符,其优先级比较高,高于双目运算符的优先级,结合性为右结合性。
2.3.2 关系运算、逻辑运算和条件运算
1.关系运算符:>、<、>=、<=、!=、==
(1)优先级:所有关系运算符的优先级都比算术运算符低而比赋值运算符高,前4种关系运算符的优先级比后2种关系运算符的优先级高。
(2)结合性:左结合性。
(3)关系表达式的值:关系表达式的结果为“真”时用1表示,用“假”时为0表示。例如,关系表达式0.2<0.5<1.0的值为0。
注意:
(1)字符数据的比较按其ASCII码值进行。
(2)在判断两个浮点数是否相等时,由于存储器上的误差,会导致错误的结果。例如,关系表达式1.0/90*3*3*10==1.0的结果为0,而不是1。解决的方法是判断两者之差的绝对值小于某个小常数。
2.符:!、&&、||
(1)优先级:逻辑运算符“&&”和“||”的优先级比关系运算符低但比赋值运算符高,逻辑运算符“!”的优先级比所有的双目运算符高。逻辑运算符“&&”的优先级比运算符“||”的优先级高。
(2)结合性:逻辑运算符“&&”和“||”是左结合性,单目运算符“!”是右结合性。
(3)逻辑表达式的值:逻辑表达式的结果为“真”时用1表示,为“假”时为0表示。注意:C语言在进行逻辑运算时把非0作为“真”,把0作为“假”。
注意:在C语言中,由逻辑运算“&&”和“||”组成的逻辑表达式,在特定的情况下会产生“短路”的现象。(1)在一个“&&”表达式中,若“&&”的一端为0,则不必再计算另一端,该表达式肯定为0。由于“&&”的结合性为左结合性,因此如果左端为0时,不再计算其右端。(2)在一个“||”表达式中,若“||”的一端为1,则不必再计算另一端,该表达式肯定为1。由于“||”的结合性为左结合性,因此如果左端为1时,不再计算其右端。
3.件运算符:? :
(1)条件运算符是C语言中唯一具有三个操作对象的运算符,它的功能是一种在两个表达式的值中选择一个的操作。它的语法格式为:
e1?e2:e3
它的操作过程为:先计算表达式e1的值,若e1为“真”(非0),则整个表达式的值为表达式e2的值,否则整个表达式的值为表达式e3的值。例如,表达式b>0?a+b:a-b表示求a+|b|的值;表达式max=a>b?a:b表示求a和b中最大的数。
(2)优先级:比赋值运算符和逗号运算符高,但比所有的其它运算符低。
(3)结合性:右结合性。
注意:整个表达式的结果类型为e2与e3二者中类型较高的一种类型。例如,表达式y<3?-1.0:2的结果类型为实型。
C 运算符与表达式的更多相关文章
- Sql Server系列:运算符和表达式
运算符的一些符号,他们能够用于执行算术运算.字符串连接.赋值以及在字段.常量和变量之间进行比较.在SQL Server 2012中,运算符主要由以下6大类:算术运算符.赋值运算符.比较运算符.逻辑运算 ...
- C Primer Plus_第5章_运算符、表达式和语句_编程练习
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...
- javascript运算符与表达式
表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...
- 【C语言学习】《C Primer Plus》第5章 运算符、表达式和语句
学习总结 1.有了一定的语言基础,运算符和表达式这些都大同小异,无外乎赋值运算符(=).算术运算符(+.-.*./.%.++.——)和其他的一下运算符(sizeof.(type)). 2.声明一个参数 ...
- [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式
[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...
- [Java 基础]运算符和表达式
Java运算符 (1)赋值操作符 赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值). 右值可以是任意的常量.变量或表达式(只要可以生成一个值). 左值必须是一个明确的.已命名的变量 ...
- 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等
[源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native ...
- Python运算符与表达式
Python运算符包括赋值运算符.算术运算符.关系运算符.逻辑运算符.位运算符.成员运算符和身份运算符. 表达式是将不同类型的数据(常亮.变量.函数)用运算符按照一定得规则连接起来的式子. 算术运算符 ...
- 01-Java基础知识:数据类型与变量、标识符、运算符、表达式
Java基础知识:数据类型与变量.标识符.运算符.表达式 一.数据类型 Java定义了基本数据类型.引用数据类型.自定义类型. 八种基本数据类型:byte (1). short (2). int ( ...
- Objective-C中的数据类型、常量、变量、运算符与表达式
1.Objective-C中的数据类型: Objective-C中的基本数据类型有:int.char(-128-127).float.double.BOOL,Byte(0-255) Id类型相当于(等 ...
随机推荐
- Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk
fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...
- iOS 创建上线证书
1.制作上线证书需要准备一个付费的账号(99$),登陆https://developer.apple.com在最上方的位置点击Member Center进入登陆界面,在登陆界面输入付费的账号和密码进入 ...
- Power Strings(kmp妙解)
Power Strings Time Limit : 6000/3000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Tota ...
- HDU2054_A == B ?【模拟题】【大数】【水的问题】
A == B ? Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 【MFC初学】
void CMy322Dlg::OnButton1() { UpdateData(TRUE); m_crypt=m_plaintxt; for(int i=0;i<m_plaintxt.GetL ...
- HasMap
您还未登录 ! 登录 注册 论坛首页 → Java企业应用论坛 → 深入理解HashMap 全部 Hibernate Spring Struts iBATIS 企业应用 Lucene SOA Java ...
- Asp.net MVC + EF6.0 经常出现的问题
1.运行视图时出现问题:未能加载文件或程序集"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c ...
- pagination jquery最简单的分页【无刷新和刷新都通用】
参数说明 参数名 描述 参数值 maxentries 总条目数 必选参数,整数 items_per_page 每页显示的条目数 ...
- 解决Qt中QTableWidget类方法setItem 时导致程序崩溃问题
在为一个音乐播放器增加功能时莫明奇妙的出现程序崩溃,定位到是由于QTableWidget 的setItem方法导致的,最终在此处找到了解决方式. 大致是说不能在setItem之前连接cellChang ...
- Hive的安装配置
Hive的安装配置 Hive的安装配置 安装前准备 下载Hive版本1.2.1: 1.[root@iZ28gvqe4biZ ~]# wget http://mirror.bit.edu.cn/apac ...