黑马程序员——运算符

来源:互联网 发布:linux 安卓 知乎 编辑:程序博客网 时间:2024/06/06 14:08

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

运算符的基本概念:
运算符是告诉编译程序执行特定算数或逻辑操作的符号。
运算符的分类
按照功能划分:算术运算符、关系运算符、逻辑运算符、按位运算符。
运算符根据参与运算的操作数的个数分为:
单目运算,双目运算 和三目运算符。
单目运算符:只有一个操作数. 如:i++ 、!、 sizeof .
双目运算符:有两个操作数 如 : a+b
三目运算符: c语言中唯一的一个。也称作问好表达式。 a>b ? 1 : 0
运算符的优先级
c语言中,运算符的运算优先级共分为15级,1级最高,在表达式中,优先级较高的先于优先级较低的进行运算。
而在一个运算时运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。
运算符的结合性
c语言中各运算符的结合性分为两种,即左结合性(从右向左)和右结合性(自右至左)。
算数运算符
算术运算符都是双目运算符,优先级相同时具有左结合性。
算术运算符
求余运算符的使用注意。
m%n m除以n之后,取得余数部分。
m和n都不能为小数
m<0 结果为负数
n<0 正负性取决于M
赋值运算符
1、赋值表达式
a+b 10+a f1+num 以上都是表达式。
将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来、有意义的式子称为表达式。
表达式可以是常量也可以是变量或算式,在表达式中又可以分为:算法表达式、逻辑表达式和字符串表达式。
表达式的特点:
表达式是一个有意义的式子,所以一定有返回值。
2、赋值运算符 (‘=’号 ) 在优先级列表中排名十四。
在c语言中,把“=”定义为运算符,从而组成赋值表达式。如: x=a+b , y = i++ + –j
作用: 把等号右侧的值赋给等号左侧的变量。
注: 等号的左侧必须是变量。
赋值表达式的功能是:计算表达式的值在赋予左边的变量。
赋值运算符结合性: 右结合(自右向左)。
复合赋值运算符
+= a+=3 ;——> a = a+3
-= a-=3; ——>a = a-3
= a=3;——> a = a*3
/= a/=3——> a = a/3
%= a%=3 ——> a = a %3
自增自减运算符
1、在程序设计过程中,经常遇到“i= i+1”和“i= i-1”这两种极为常用的操作。c语言为这种操作提供了2个更为简洁的运算符,即 ++和–,分别叫做 自增运算符 和自建运算符。它们是单目运算符,具有右结合性。
2、自增自减运算符的求值过程。
1)、前缀表达式:++x,–x,其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表达式的值;即“先变后用”。
也就是变量的值先变,再用变量的值参与运算。
2)、后缀表达式:x++,x–,先用x的当前值作为表达式的值,在进行自增自减1运算,即“先用后变”,也就是先用变量的值参与运算,变量的值在进行自增自减变化。
sizeof运算符
单目运算符,以字节的形式给出了其操作数的存储大小。操作数可以是表达式或括号内的类型名。操作数的存储大小由操作数的类型决定。 用法 sizeof(常量/变量)
C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!
字符型常量和变量的存储大小是有区别的。 常量占用“4”字节 , 变量占用‘1’字节。
用在常量和变量的时候,可以省略括号。
逗号运算符
在c语言中,“,”是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成组成一个表达式,称为逗号表达式。
a = (a+b,c+2)
其一般形式为: 表达式1,表达式2.
求值过程是:分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
运算规则: 从左到右,依次计算每个表达式的值,取最后一个表达式的值作为整个表达式的值。

#include <stdio.h>int main(int argc, const char * argv[]) {    int a = 4,b = 5,result=0;    //a+4,b+3,a+b 用逗号连接的表达式是一个逗号表达式    //逗号表达式的求值过程:先逐个求表达式的值,然后把最后一个表达式的值返回(作为整个逗号表达式的值)    //         8 , 8 , 9    result = (a+4,b+3,a+b,1+2,10);    printf("result = %d\n",result);    return 0;}

最后result的值为10。

逗号运算符的使用注意:

1)逗号运算符可以嵌套使用

  (a++,(a+3,b+5,z=a+b))

2)有时候,不太注重逗号表达式的值

3)并不是所有出现逗号的地方都能组成逗号表达式,比如定义多个变量的时候
关系运算符
1、c语言中的真假性。
在c语言中所有数值都有真假性,非零即真,只有0为假;
关于运算符返回值只有两个,要么真(1),要么是假(0);
2、关系运算符:
( > 、<、 >=、<=) 运算优先级别在第六级
(==、!=)优先级别在第七级
关系运算符都是双目运算符,具有左结合性
关系表达式:用关系运算符连接的式子。
逻辑运算符
逻辑运算符的概念:
c语言中提供了三种逻辑运算符:
&& (与)(第十一级) 双目运算符;具有左结合性
||(或)(第十二级) 双目运算符;具有左结合性
!(非)(优先级在第二级) 单目运算符,具有右结合性
逻辑表达式: 用逻辑运算符连接的表达式;
其中的表达式可以依旧是逻辑表达式,从而形成了嵌套的形式,例如:(a&&b)&&c;
根据逻辑运算符的左结合性,上面的式子也可以写为:a&&b&&c ;
逻辑 表达式的值是式子中各种逻辑运算的最后值,以 “1” 和“0”分别代表“真”和“假”;
1)与运算(&&),参与运算的两个值都为真时,结果才为真,否则为假。 口诀: 一假则假
2)或运算(||),参与运算的两个值只要有一个为真,结果就为真。两个值都为假时,结果为假;口诀:一真则真,同假则假;
3) 非运算(!),取反,真变假,假变真。
逻辑运算的短路问题:
与 短路 :&& 只要第一个条件表达为假,那么后面的条件表达就不参与运算了。
或短路: || 只要第一个表达式为真,那么后面的条件表达就不参与运算了。
三目运算符
也称为条件运算符, 由 ?和:,组成,有三个参与运算的量;
格式 : 表达式1?表达式2:表达式3
如果表达式1成立的话,执行表达式2,不成立的话执行表达式3.
例如: if(a>b) max = a ; 可用条件表达式写为: max=(a>b)?a:b;
else max =b;
条件运算符?和:是一对运算符,不能分开单独使用。
条件运算符的结合方向是从右至左。
例如:
a>b?a:c>d?c:d 应理解为: a>b?a:(c>d?:c:d),这是条件表达式的嵌套,即其中的表达式3又是一个条件表达式。

0 0
原创粉丝点击