No.8 C语言操作符总结

C语言操作符可谓五花八门,但是只要理清之间的功能,就可以运用自如啦!

操作符和分类

1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系操作符
7.逻辑操作符
8.条件操作符

算数操作符:+ - * / %
注意:%操作符的操作数必须为整数,返回值为整除之后的余数。

移位操作符
<< 左移操作符
>> 右移操作符

左移操作符 移位规则:左边抛弃,右边补0;
右移操作符 移位规则:逻辑移位 左边用0填充,右边丢弃;算数移位 左边用原值的符号位填充,右边丢弃(注意:一般的编译器中多采用算术右移)。

举个左移操作符的例子:
int num =  10 ;
num在内存中的二进制为:  00000000000000000000000000001010
num左移一位产生的结果:  00000000000000000000000000010100
但是,num在没被赋值的情况下,自身值不会改变。

举个右移操作符的例子(算数右移)
int num = -1 ;
num在内存中以补码形式存储:  11111111111111111111111111111111
右移一位,由于是负数,即为:  11111111111111111111111111111111

注意:对于移位运算符,不能移动负数位,这个是错误的!

位操作符
&//按位与
| //按位或
^ //按位异或
注意:它们的操作数必须为整数

#include <stdio.h>

int main()
{
	int num1 = 1 ;                                                         //00000000000000000000000000000001
	int num2 = 2 ;														   // 00000000000000000000000000000010
	printf("num1 & num2 = %d\n", num1 & num2) ;  // 00000000000000000000000000000000
	printf("num1 | num2 = %d\n", num1 | num2) ;     //  00000000000000000000000000000011
	printf("num1 ^ num2 = %d\n", num1 ^ num2) ;  //  00000000000000000000000000000011
	return 0 ;
}

赋值操作符

int salary = 8000 ; //薪资
salary = 12000 ;
还可以连续赋值:
int a = 10 ;
int x = 0 ;
int y = 20 ;
a = x = y + 1 ;
但我们并不推荐这种写法。我们不妨这样写:
x = y + 1 ;
a = x ;
这样的可读性就更高,作为一名初学者,一定要养成良好的编程习惯。

复合赋值符
1.+=
2.-=
3.*=
4./=
5.%=
6.>>=
7.<<=
8.&=
9.|=
10.^=

例如:
int x = 10 ;
x = x + 10 ;
x += 10 ; //复合赋值,这样写会更加简洁明了。

单目操作符
1.! //非
2.- //负值
3.+ //正值
4.& //取地址
5.sizeof //操作数的类型长度(以字节为单位)
6.~ //对一个数二进制按位取反
7.-- //前置、后置–
8.++ //前置、后置++
9.* //解引用操作符
10.(类型) //强制类型转换

#include <stdio.h>
int main()
{
	int a = - 10 ;
	int* p = NULL ;
	printf("!2 = %d\n" , !2) ;
	printf("!0 = %d\n" ,!0) ;
	a = -a ;
	p = &a ;
	printf("sizeof(a) = %d\n" , sizeof(a)) ;
	printf("sizeof(int) = %d\n" , sizeof(int)) ;
	printf("sizeof a = %d\n" , sizeof a);
	return 0 ;
}

在这里插入图片描述
关系操作符
1.>
2.>=
3.<=
4.!= //用于测试“不相等”
5.== //用于测试“相等”
注意:后两种操作符在进行字符串比较时 绝对不能使用 !!!

逻辑操作符
1.&& //逻辑与
2.|| //逻辑或

区分“逻辑与”和“按位与”以及“逻辑或”和“按位或”:
1 & 2 -----> 0
1 && 2 ----> 1

1 | 2 -----> 3
1 || 2 ----> 1

条件操作符
exp1 ? exp2 : exp3
(我会这样记它:exp1对吗?对的话就走exp2,错的话就走exp3)

if (a > 5)
	b = 3 ;
else
	b = - 3 ;
转换成条件表达式,为:
b = a > 5 ? 3 : -3 ;

关于C语言里的操作符先简单总结这么多,我们要在编程中灵活运用,才能使代码的可读性更高。

猜你喜欢

转载自blog.csdn.net/studyhardi/article/details/83097151