C语言操作符

本文详细介绍了C语言中的各类操作符,包括算数、移位、位、赋值、单目、关系、逻辑、条件、逗号表达式、下标引用、函数调用和结构成员等,深入解析了每种操作符的使用场景和特性。

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

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

1.算数操作符:  

           +            -        *          /         %

(1)除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。

(2)对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

(3)%操作符的两个操作数必须为整数。返回的是整除之后的余数。

2.移位操作符:

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

(1)左移操作符操作时:左边抛弃,右边补0。

(2)右移操作符操作运算分为俩种:

逻辑右移:左边用0填充,右边丢弃。

算数右移:左边用原该值的符号位填充,右边丢弃。

注意:

(1)对于移位操作符,不要移动负数位,这个是标准未定义的。

(2)我们一般使用算数右移。

3位操作符

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

#include<stdio.h>
int main()
{                
	int num1 = 1;//00000000000000000000000000000001
	int num2 = 2;//00000000000000000000000000000010
	num1 & num2; //00000000000000000000000000000000    有0为0
	num1 | num2; //00000000000000000000000000000011    有1为1
	num1 ^ num2; //00000000000000000000000000000011    相同为0,相异为1
	return 0;
}

4.赋值操作符:

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

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

	int i = 0;
	i = i + 5;
	i += 5;//复合赋值

5.单目操作符:

    !  逻辑反操作、     -  负值、      +   正值、   &  取地址、    sizeof  操作数的类型长度,以字节为单位、

   ~  对一个数的二进制按位取反、    --    前置、后置--、    ++  前置、后置++、   

    *   间接访问操作符,解引用操作符、    (类型)     强制类型转换 .

(1)!是操作符对它的操作数执行逻辑反操作,结果为真则输出假,结果为假输出为真,真为1,假为0。

(2)- 与 +就像一个数学符号一样产生正值和负值。

(3)& 取地址,取一个操作数的地址,&数组名取的是整个数组的地址。

(4)sizeof求变量时,可省括号:sizeof a //求a变量的类型长度。以字节为单位。 求类型长度时,不能省略括号: sizeof(int)

(5)~ 对一个数的二进制按位取反(包括符号位)

(6)前置 ++ 先加后用 ,前置 -- 先减后用

	int i = 0;
	int j = ++i;
	printf("%d %d", j, i);//j = 1; i = 1;

(7)后置 ++ 先用后加,后置 -- 先用后减

	int i = 0;
	int j = i++;
	printf("%d %d", j, i);//j = 0; i = 1;

(8)*  间接访问操作符,与指针一起使用,用于访问指针所指向的值。

	int a = 10;
	int *p = &a;//此处 * 表示为整型指针 ,把现有变量的地址赋值给一个指针变量
	*p = 20;// * 为指针运算符 ,*p的值改变,同样a的值也改变
	printf("%d", a);//20

(9)(类型)强制类型转换,把表达式的值转换为另外比较大的类型的时候,需要强制类型转换。

6.关系操作符

                             >   >=    <     <=    !=  不想等         == 相等

7.逻辑操作符

                               &&    逻辑与                ||       逻辑或

(1)区分逻辑与和按位与,逻辑或和按位或

          1 & 2 ----------> 0   二进制运算后值为0

         1 &&2 -----------> 1

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

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

(2)工作原理: &&操作符的左操作数总是首先进行求值, 如果它的值为真,然后就紧接着对右操作数进行求值。如果左操作数

的值为假,那么右操作数便不再进行求值,因为整个表达式的值肯定是假的,右操作数的值已无关紧要。|操作符也具有相同的特

点,它首先对左操作数进行求值,如果它的值是真,右操作数便不再求值, 因为整个表达式的值此时已经确定。这个行为常常

被称为“短路求值”。

#include<stdlib.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	//i = a++ || ++b || d++     a = 1, b = 3, c = 3, d = 4
	printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);//a = 1, b = 2, c = 3, d = 4
	system("pause");
	return 0;
}

8.条件操作度

                exp1  ?  exp2   :  exp3

(1)首先计算的是exp1, 如果它的值为真(非零值),那么整个表达式的值就是exp2的值, exp3不会进行求值。但是,如果exp1

的值是假(零值), 那么整个条件语句的值就是expression3的值,exp2 不会进行求值。 

9.逗号表达式

               exp1 ,   exp2 ,   exp3,....... expN

(1) 逗号操作符将两个或多个表达式分隔开来。这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的

值,意思就是最后这个表达式起判断作用。

10.下标引用,函数调用和结构成员

(1)[ ]下标引用操作符

操作数:一个数组名 + 一个索引值

(2)()函数调用操作符

接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传给函数的参数

(3). 结构体、成员名      -> 结构体指针->成员名

 .  和  -> 操作符用于访问一个结构的成员。如果s是一个结构变量,那么s.a就访问s中叫a的成员。当你拥有一个指向结构的指针而不是结构本身,且欲访问它的成员时,就需要->操作符,这样性能会高一些。

         C语言操作符拥有品种繁多的操作符,它的这个特点使它很难精通。但另一方面,C的操作符具有其他语言的操作符无可抗衡的价值。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值