c语言操作符的总结

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的成员)

注:当你拥有一个指向结构的指针而不是结构本身,且欲访问它的成员时,就需要用->操作符而不是.





猜你喜欢

转载自blog.csdn.net/pigdwh/article/details/79833639