C语言中的运算符
1运算符和表达式
C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。
算数运算符:用于算数运算,包括+、-、* 、/等。
关系运算符:用于比较运算,包括>、<、==、!=等。
逻辑运算符:用于逻辑运算,包括 &&、||、!三种。
位操作运算符:按二进制位对位运算,包括&、|、~、<<等。
赋值运算符:用于赋值运算,包括=、+=、&=等。
条件运算符:三目运算符,用于条件求值(?:).
逗号运算符:用于把若干表达式组合成一个表达式(,)。
指针运算符:用于取内容*和用于取地址&。
求字节数运算符:用于计算数据类型所占的字节数sizeof。
特殊运算符:()、[]、成员(->,.)等。
1.2运算符优先级
A.函数计算优先。
B.其次是强制类型转换。
C.自增、自减和取反次之。
D.先乘除再加减。
E.有括号先算括号内的。
注:表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +b或a+ ++b。同一优先级的运算符,运算次序由结合方向所决定。
也可以这样记:!> 算术运算符 > 关系运算符 > && > || > 赋值运算符
2数据类型转换
2.1强制类型转换:就是显示的将表达式转换成所需类型。
方式1:(类型名)(表达式).
方式2:(类型名)表达式.
例:强制类型转换。
注:强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所需类型使用。
2.2隐含类型转换:整型、单精度型和双精度型的不同数值类型可以混合运 算,在运算过程中就有隐式类型转换。
隐式类型转换的规则就是:从低向高转换,例如char和short可以转 换为int。
3算术运算符与算术表达式
3.1基本算术运算符:包括+、-、*、/、%五个运算符。
3.2特殊的算术运算符:自加和自减。
前缀形式:先对运算对象自增或自减,再引用运算对象的值作为表达式 的值。
后缀形式:先引用运算对象的值作为表达式的值,再对运算对象自增或 自减。示例:
++a 等价于a=a+1,--a等价于a=a-1;
a++ 等价于a=a+1,a--等价于a=a-1;
注:可以看出单独使用时没有区别,但是在表达式中对表达式影响不同。
示例代码:
4赋值运算符与赋值表达式
4.1简单的赋值运算符
简单赋值的作用就是将一个表达式的值赋给一个变量存储起来,例如a=4;
注:赋值运算的左边必须是变量;
赋值运算优先级比较低,仅优先于,;
4.2复合赋值运算符
就是把运算和赋值结合在一起,例如+=、-=等。
例如:m+=3 等价于 m=m+3;
4.3赋值表达式的运算
使用表达式应该注意的情况:
4.3.1复合的赋值运算符。
示例代码:
5.逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号功能
例如:
当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为 真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若 原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:
因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
6 关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号功能
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if(Amount=123) ……
很 多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为 123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……
7 条件运算符
条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
例如:
8 逗号运算符
C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设:
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达 式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
老九学堂出品,转载请私信哦
对于文章内容有不理解的可以添加老九君个人QQ:614940318,请备注来自简书
老九学堂免费C、C++、Java课程地址:
https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82
网友评论