03.运算符

来源:互联网 发布:金融界名人名言 知乎 编辑:程序博客网 时间:2024/06/05 19:24

运算符(操作符,Operator):实现各种计算操作。
参与运算的数据称为操作数,操作数可以为变量或常量,运算符就是对它所带的操作数进行运算的。
中间运算结果是常量,不能为左值。
左值:记录数据的值,变量是一种左值。即该块内存可以被写。

按运算功能分类:
1)算数运算符:+、-、*、/、%、++、–、- 运算结果是一个算术值
除运算时,若是整除,商有小数名,取整数部分。
浮点数的0可以当除数。
模运算,两边必须为整数,运算结果的符号与被除数(前面的)相同。
自增自减的操作数只能是变量。
k=++i 先加再返回。
Int n = 8; int k = n–;//此时输出 n = 7; k=8;
k=i++ 先返回再加。
Int n = 8; int k = –n;//此时输出 n = 7; k=7;
2)关系运算符:>、<、<=、>=、 ==、!= 运算结果是一个逻辑值(布尔值)
浮点数是用近似值表示的。“==”用于两个浮点数的判断时,由于存储误差,可能会得出错误结果。

  数学中:i<j<k;C语言中:即(i<j)<k,即(i<j && j<k)

3)逻辑运算符:!、&&(与)、||(或) 运算结果是一个逻辑值,0为假,非0为真。
对逻辑值进行运算:与像乘法,或像加法。
整数都可以当成逻辑值计算。
&&的前一个判断如果是假,则后面的不会执行,直接判断为假。
同理,||的前一个判断如果是真,则后面的不会执行,直接判断为真。
4)位运算符:<< 、>>、 ~(按位取反)、 |(按位或)、 ^(按位异或)、&(按位与)
位运算符只支持整数,参加位运算的操作数会被转换成二进制。(或者说只能对二进制进行计算)然后根据每一位进行逻辑运算。
按位与用来清零,按位或用来置位。
按位异或:相同为0,相异为1;可以用来将指定的位反转。A^B^B=A 可以用于加密。
算术右移(符号位不变,即高位补符号位,正数补0,负数补1)
逻辑右移(高位补0)
左移都是补0
5)赋值运算符:=及其扩展的赋值运算符,右结合性。
一般的运算符不会改变操作数的值。但是赋值运算符可以。
左边必须是变量,右边是表达式。左值:表示存储在计算机内存中的对象,而不是常量或者计算结果,变量是左值。
复合赋值:i += 3; //i = i+3;
6)条件运算符:?:
条件?表达式1:表达式2;
7)逗号运算符: ,
逗号运算符组成的式子也是表达式,其值等于最右边表达式的值
8)指针运算符:*、&
&取地址,*根据地址取变量。
9)求字节数运算符:sizeof
作用是返回一个对象或者类型所占的内存字节数。
使用:sizeof(类型,变量名或者表达式);
sizeof只关心类型,只会分析括号中的类型,不会对括号中的内容进行运算。
如:int i = 5; sizeof(i=10); 输出i还是5。
10)强制类型转换运算符:(类型)
得到所需的中间变量,原变量的类型不变
11)分量运算符: . ->
12)下标运算符: []
13)其他: 函数运算符

根据所带操作数个数可以分为:
一元(单目)运算符、
二元(双目)运算符、
三元(三目)运算符、
多目运算符

运算符优先级大概规律:
算术>比较>逻辑>赋值>逗号
括号可以改变运算顺序。

0 0
原创粉丝点击