您的位置:首页 > 编程语言 > C语言/C++

c语言操作符的总结

2018-04-06 17:18 495 查看
1:算术操作符

+ - * / %
除了%操作符,其余几个操作符都是既适用于浮点型又适用于整数型。
当/操作符的两个操作数都是整数时,它执行整除运算,在其他情况下则执行浮点数除法。
%为取模操作符,它只接受两个整型操作数,把左操作数除以右操作数,但它返回的值是余数。
2:移位操作符
<< 左移操作符
移位规则:左边抛弃,右边补零
>>右移操作符
移位规则:(1):逻辑移位
左边用0填充,右边抛弃
(2):算术移位
左边用原值的符号位填充,右边丢弃
下面我们举例子说明,当操作数为有符号数时:



下面举例子说明一下赋值和没被赋值





上面结果表明:num在移位过程中,如果没有被赋值,自身的值不会变。
注意:无论左移还是右移,两个操作数都必须是整数型。
对于移位运算符,不要移动负位,这个是标准未定义的。
3:位操作符
& 按位与(同时为1才为1)
| 按位或(有1得1)
^ 按位异或(相同为0,相异为1;任何数和0异或都是它本身;相同的比特位异或清零)
注:他们的操作数必须是整数
4:赋值操作符
它具有结合性:#include<stdio.h>
#include<windows.h>
int main()
{
int t=0, num =-10;//初始化
t=num=num << 1;//赋值
printf("%d\n %d\n", t,num);
system("pause");
return 0;
}输出结果为:-20     -20
5:复合操作符
+=      -=      *=           /=       %=       >>=    <<=      &=        |=         ^=#include<stdio.h>
#include<windows.h>
int main()
{
int t=0, num =-10;
t += num;
//t=t+num;
printf("%d\n", t);//-10
system("pause");
return 0;
}其他的运算符一样的道理。
6:单目操作符
!             逻辑反操作
-               负值
+              正值
&              取地址
sizeof        操作数的类型长度(以字节为单位,可以求变量所占空间大小)
~              对一个数的二进制按位取反
--             前置,后置--
++           前置,后置++
*              间接访问操作符(解引用操作符)
(类型)   强制类型转换 
7:关系运算符
>          
>=
<=
!=      用于测试“不相等”
==     用于测试“相等”
注:注意==和=的区别。
8:逻辑操作符
&&逻辑与
||逻辑或

 注:逻辑与、逻辑或是判断真假的,按位与、按位或是对二进制数进行操作的。对逻辑与操作,只要有一个为假,便不必再进行后边的计算;对逻辑或操作,只要有一个为真,便不必再进行后边的操作。 9:条件操作符exp1?exp2:exp3(exp1表达式的值为真,那么整个表达式的值为exp2,exp3不会进行求值;否则整个表达式的值为exp3,不会对exp2进行求值) 
下面用例子说明它的用法,它其实实现了和if语句一样的功能。



10:逗号表达式
exp1,exp2,exp3,...expn
规则:逗号表达式从左向右依次执行,整个表达式的结果是最后一个表达式的结果。
11:下表引用、函数调用和结构成员
(1)操作数:一个数组名+一个索引值
(2)函数调用操作符
接受一个或者多个操作符:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
(3)访问一个结构的成员
结构体.成员名
结构体指针->成员名(用于访问一个结构的成员)
eg:s.a(访问s结构体变量中a的成员)
注:当你拥有一个指向结构的指针而不是结构本身,且欲访问它的成员时,就需要用->操作符而不是.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: