这是一篇关于c语言操作符的介绍
在C语言中,操作符主要包括算数操作符,移位操作符,位操作符,赋值操作符,单目操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用和结构成员。
1.算数操作符:
+ - * / %
例:
定义整型变量 a=4 b=2
运算操作符 | 含义 | 运算操作 | 结果 |
---|---|---|---|
+ | 加法操作符 | a+b | a和b的和为 6 |
- | 减法操作符 | a-b | a和b的差为 2 |
* | 乘法操作符 | a*b | a和b的乘积为 8 |
/ | 除法操作符 | a/b | a和b的商为2 |
% | 求余运算符 | a%b | a除以b的余数为0 |
注:
除了%操作符之外,其他几个操作符既可以用于整型也可以用于浮点型,而%操作符的两个操作数必须为整数,返回的是整出之后的余数。
2:移位操作符
<< 左移操作符
>> 右移操作符
<1> : 左移操作符 <<
移位规则:
左边抛弃,右边补0
<2>: 右移操作符 >>
右移运算分为逻辑右移和算数右移两种
逻辑右移规则:左边补0,右边抛弃
算数右移规则:左边用原值的符号位补充,右边抛弃
例如:
int num=1
它在内存中存储的补码为32个1
11111111111111111111111111111111
(注:整型在内存中的存储为原数值的补码。其中正数的原码,补码,反码都相同,都为其原码,负数的补码为反码加1.)
例如:
int a=1
原码:00000000000000000000000000000001
补码:00000000000000000000000000000001
反码:00000000000000000000000000000001
int b= -1
原码:10000000000000000000000000000001
补码:1111111111111111111111111111111111110(符号位不变)
反码:1111111111111111111111111111111111111(补码加1)
逻辑右移:
左边补0,最右边的1丢弃
01111111111111111111111111111111
算数右移:
左边用原符号位补充,最右边的1丢弃
11111111111111111111111111111111
这里给出一段代举例:
它的结果输出是5,这里需要特别注意:
<1>:移位操作符不能直接赋值改变变量,如需要改变变量应这样输入:a>>=1;
<2>:左移操作相当于*2,右移操作相当于/2;
3:位操作符
位操作符包括:按位与(&),按位或(|),按位异或(^).
例如:int a=13 int b=5
a 00000000000000000000000000001101
b 00000000000000000000000000000101
a&b 00000000000000000000000000000101
a|b 00000000000000000000000000001101
a^b 00000000000000000000000000001000
注:操作数必须为整数
4:赋值操作符
赋值操作符包括:= += -= *= /= %= >>= <<= &= |= ^=
例:
int a=10;
a=a+10;
a+=10;(复合赋值,与a=a+10得到的结果是相同的。)
其余运算符算法相似。
5:单目操作符
单目操作符包括:逻辑反操作(!) 负值(-) 正值(+) 取地址(&)
操作数的类型长度(sizeof) 对一个数的二进制按位取反(~)
前置--,后置--(--) 前置++,后置++(++) *,(类型)等
需要注意的是:
<1>:&是取地址,%p打印地址
<2>:sizeof()是操作符,不是函数
<3>:后置++(–)的用法为先引用,后运算;前置++(–)的用法为先运算,后引用。
这里给出一段代码举例:
<4>:*在这里是间接访问操作符,主要和指针相关
<5>:(类型)是强制类型转换操作符,例如强制将浮点型数转换为整型数。
这里给出一段代码举例:
6:关系操作符
关系操作符包括:大于(>) 小于(<) 大于等于(>=)
小于等于(<=) 不等于(!=) 等于(==)
7:逻辑操作符
逻辑与(&&) 逻辑或(||)
例如:
1&2————>0 按位与
1&&2————>1 逻辑与
1|2————>3 按位或
1||2————>1 逻辑或
8:条件操作符
exp1?exp2:exp3
判断exp是否为真,若为真,则exp2;若为假,则exp3.
举例解释一下上述语句
当a=10时,通过if的条件判断后,b=3;
当-10时,b=-3;
如果用上述语句即
两种方法得到的结果是一样的
9:逗号表达式
用逗号隔开的多个表达式
例如;
exp1,exp2,exp3,…,expn
注:
逗号表达式从左到右依次执行,整个表达式的结果是最后一个表达式的结果。
这里给出一段代码来举例:
结果输出是c=13。
10:下标引用,函数调用和结构成员
(1)[ ]
操作数:一个数组名+一个索引值;
例如:
int arr[20]; //创建数组
arr[10]; //使用下标引用操作符
[ ]的两个操作数是arr和9。
(2) ()
函数调用操作符
接受一个或多个操作数,第一个操作数是函数名,剩余的操作数是传递给函数的参数。
(3)访问一个结构体成员
.结构体.成员名 ->结构体指针->成员名