欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言操作符

程序员文章站 2022-07-14 08:09:56
...

c语言操作符


操作符的种类

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
  • 下标引用,逻辑调动和结构成员

算术操作符

+    -    *    /    %

注: 除了%符号之外,其他的符号都可以进行整型或者浮点型的运算。
        对于/符号,如果两个操作数都为整型则进行整型运算,而只要有一个浮点数则进行浮点数运算。
        对于%符号,两个操作符必须为整数,返回的值为整除之后的余数。


移位操作符

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

左移操作符规则:左边抛弃,右边补零。
(将一个数字在内存中的的二进制形态最左边一位抛弃,右边补零就可完成左移操作)

  • 比如整数num(num=8)在内存中的二进制位为:

00000000000000000000000000001000

  • 执行左移操作之后num为:

00000000000000000000000000010000

我们要注意的是,内存中的num并没有改变,只有在执行赋值操作之后num的值才会改变!程序验证如下:

int main()
{
	int num = 8;
	num << 1;
	printf("%d\n", num);
	system("pause");
	return 0;
}

程序的运行结果如下:

8
请按任意键继续. . .
int main()
{
	int num = 8;
	num <<= 1;
	printf("%d\n", num);
	system("pause");
	return 0;
}
16
请按任意键继续. . .

当我们给num重新赋值的时候num的值就会变了


右移操作符规则:
右移运算分为两种:一种是逻辑位移,一种是算术位移
逻辑位移:左边补0,右边抛弃(适用于无符号数)
算术位移:左边用原来该值的符号位填充,右边抛弃(适用于有符号数)




位操作符

    &(按位与)    |(按位或)    ^(按位异或)

它们的操作数必须为整数


利用按位异或可以实现不借助中间变量实现两个数字的交换

int main()
{
	int a = 5;
	int b = 8;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a等于%d\n", a);
	printf("b等于%d\n", b);
	system("pause");
	return 0;
}

运行结果为

a等于8
b等于5
请按任意键继续. . .

赋值操作符

  =

顾名思义,赋值操作符就是可以给变量赋值的操作符.
比如

int a=10;
a=20;
int high=100;
high=180;//我们可以对我们不满意的变量值进行更改

复合赋值符


+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

这些运算符都可以写成复合的效果
比如:

int a = 10;
a = a + 10;
a += 10;//这句代码与上一句含义相同,但是代码简洁了许多,比较容易阅读。

单目操作符


!            逻辑反操作
-            负值
+           正值
&           取地址
sizeof      操作符的类型长度
~           对一个数字的二进制位进行按位取反
--           自减操作符
++          自加操作符
*            间接访问操作符(解引用操作符)
(类型)      强制类型转换

单目操作符里面我们要注意的就是sizeof这个操作符,在我一开始接触sizeof时我认为他是个函数,后来经过学习我才知道原来sizeof是一个操作符。
注意++a和a++的意思是不同的,++a表示先加后用,而a++表示先用后加。


关系操作符


>
<
>=
<=
!=
==

在使用关系运算符的时候我们要注意=和==的区别,经常不小心把==写成=,意思就差很多了。


逻辑操作符


&&        逻辑与
||          逻辑或

要区分清楚逻辑与按位与以及逻辑或按位或


条件操作符


exp1  ?  exp2  :  exp3

这个表达式的含义就是

if(exp1)
	{
		exp2;
	}
	else
	{
		exp3;
	}

逗号表达式

exp1,exp2,exp3,exp4…expN

逗号表达式就是用逗号隔开的多个表达式,从左向右依次执行,整个逗号表达式的结果就是最后一个表达式的结果。


下标引用、函数调用和结构成员

1.[ ]下标引用操作符
操作数:一个数组名+一个索引值。
比如arr[5]
[ ]他的两个操作数是arr和5。
2.函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
比如 add(a,b)
它的三个操作数分别是函数add,参数a,b。
3.访问一个结构体的成员
.结构体.成员名
->结构体指针->成员名