C语言:总结C语言操作符

本文详细介绍了C语言中的各类操作符,包括算术、移位、位、赋值、单目、关系、逻辑、条件、逗号表达式及下标引用、函数调用和结构成员操作符。解释了每种操作符的功能、使用场景及其运算规则,如按位与、或、异或的二进制位计算,以及前置和后置自增自减的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作符分类:

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

算术操作符

  +   -  *   /   %

1.对于/操作符,如果两个操作数都是整数,则执行整数除法,如果有一个操作数是浮点数,则执行浮点数除法。
2.%操作符的两个操作数都必须是整数,返回的是整除之后的余数。

移位操作符

<< >>

<< 左移操作符
左边抛弃,右边补0
>> 右移操作符
移位规则分两种:
1.逻辑移位 左边补0;右边抛弃
2.算数移位 左边填充原该值的符号位,右边抛弃(二进制有正负之分)。

位操作符(操作数必须是整数)

& | ^

按照所给数的二进制位进行相应的计算,然后将结果转换为十进制结果输出。

1.& ----> 按位与 按照所给数的二进制位进行与计算,对应的二进制位都为1,结果为1,否则为0
2. | ----> 按位或 按照所给数的二进制位进行或计算,对应的二进制位有一个为1,结果为1,否则为0
3. ^ ---->按位异或 按照所给数的二进制位进行异或计算,对应的二进制位相异为1,否则为0。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	char a = 5; //00000101
    	char b = 9; //00001001
    	printf("c1 = %d\n", a & b);
    	printf("c2 = %d\n", a | b);
    	printf("c3 = %d\n", a ^ b);
    	system("pause");
    	return 0;
    }

赋值操作符

= 给变量赋值

复合赋值符

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

单目操作符

! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
–前置、后置–
++前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换

1.前置++和- -:

#include <stdio.h>
int main()
{
	int a = 1;
	int x = ++a;
	//先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值,x为2。
	int y = --a;
	//先对a进行自减,然后对使用a,也就是表达式的值是a自减之后的值,y为0;
	return 0;
}

2.后置++和–

#include <stdio.h>
int main()
{
	int a = 1;
	int x = a++;
	先对a先使用,再增加,这样x的值是1,之后a变成2
	int y = a--;
	先对a先使用,再自减,这样y的值是1,之后a变成0
	return 0;
}

关系操作符

=
<
<=
!= 不相等
== 相等

逻辑操作符

&& 逻辑与
|| 逻辑或

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1, exp2, exp3, …expN

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

下标引用、函数调用和结构成员
1.[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值

int arr[10]; //创建数组
arr[5] = 8; //使用下标引用操作符。
[ ]的两个操作数是arr和5。

2.( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

#include <stdio.h>
void test1()
{
printf("hello\n");
}
void test2(const char *str)
{
printf("%s\n", str);
}
int main()
{
test1();             //使用()作为函数调用操作符
test2("hello world"); //使用()作为函数调用操作符
return 0;
}

3.访问一个结构的成员

. 结构体.成员名
-> 结构体指针->成员名

#include <stdio.h>
typedef struct Peo
{
	char name[10];
	int age;
	char sex[5];
}peo;

void set_age1(struct Peo peo)
{
	peo.age = 18;
}
void set_age2(struct Peo* pPeo)
{
	pPeo->age = 18;//结构成员访问
}
int main()
{
	struct Peo Peo;
	struct Peo* pPeo = &Peo;//结构成员访问
	Peo.age = 20;//结构成员访问
	set_age1(Peo);
	pPeo->age = 20;//结构成员访问
	set_age2(pPeo);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值