C语言操作符概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

对于刚接触C语言的小伙伴来说,操作符可能是很大一难点,今天我就向大家介绍一些操作符(注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的哈),有算术操作符,赋值操作符,单目操作符,关系操作符,条件操作符,逻辑操作符等等 。在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、算术操作符

示例:在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * \ % ++ --

这些操作符中+ - * \ %双⽬操作符(有2个操作数的,位于操作符两端的就是它们的操作数)。
++ --单目操作符(只有1个操作数)。

1.“加减乘”

例如:

#include <stdio.h>
int main()
{
 int x = 20 + 56;//算术操作符“+”
 int y = 56 - 20;//算术操作符“-”
 printf("%d\n", x * y);//算术操作符“*”
 printf("%d\n", x);
 printf("%d\n", y);
 return 0;
}

2.“除和取余”

算术操作符“/”和“%”较其他三种特殊一点:
“/”的两端如果是整数,执⾏的是整数除法,得到的结果也是整数,如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时 C 语⾔就会进⾏浮点数除法。
例如:

#include <stdio.h>
int main()
{
 float x = 6.0 / 4;
 float y = 6 / 4;
 printf("%f\n", x); // 输出 1.500000
 printf("%f\n", y); // 输出 1.000000
 return 0;
}

运算符 % 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。(负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定)
例如:

#include <stdio.h>
int main()
{
 int x = 6 % 4; // 2
 printf("%d\n", 11 % -5); // 1
 printf("%d\n",-11 % -5); // -1
 return 0;
}

3.“自增和自减”

++是⼀种⾃增的操作符,⼜分为前置++和后置++,–是⼀种⾃减的操作符,也分为前置–和后置–.
由于++和–的使用是一样的,这里我就只介绍++

前置++(先+1,再使用)
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
//这里先将a+1,然后将得到的值赋值给b
//所以运行结果是a=11   b=11
后置++(先使用,再+1int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
//这里先将a=10赋值给b,然后a再+1
//所以运行结果是a=11   b=10

二、赋值操作符

1.赋值操作符“=”

在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
例如:

int a = 100;//初始化
a = 200;//赋值,这⾥使⽤的就是赋值操作符

赋值操作符 = 是⼀个随时可以给变量赋值的操作符。

2.复合赋值符“+= -= *= /=”

例如:

a+=4 等价于 a=a+4
a-=4 等价于 a=a-4
a*=4 等价于 a=a*4
a/=4 等价于 a=a/4

三、关系操作符

C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”,主要有 > < >= <= == !=
例如:

a > b;//大于
a < b;//小于
a >= b;//大于等于
a <= b;//小于等于
a == b;//等于
a != b;//不等于

关系表达式通常返回 0 或 1 ,表⽰真假。
C 语⾔中, 0 表⽰假,所有⾮零值表⽰真。⽐如, 20> 10 返回 1 , 10 > 20 返回 0 。
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆
注意:多个关系运算符不宜连⽤

四、条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:

exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算,计算的结果是整个表达式的结果
例如:

 m = a>b ? a : b;
 //若a>b是真,则a是整个表达式的结果
 //若a>b是假,则b是整个表达式的结果
 //因此m是a和b之间比较大的数
 

五、逻辑操作符

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符

1.逻辑取反运算符(!)

“!”用于改变单个表达式的真假
例如:
在这里插入图片描述

2.逻辑与运算符(&&)

“&&”就是并且的意思(两侧的表达式都为真,则为真,否则为假)
例如:
在这里插入图片描述
对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏

3.逻辑或运算符(||)

“||”就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
例如:
在这里插入图片描述
对于||操作符来说, || 操作符的左操作数的结果不为0时,就⽆需执⾏右操作数

六、移位操作符

<< 左移操作符
>> 右移操作符
注:移位操作符的操作数只能是整数,并且是对二进制内存中的补码进行移位操作

1.左移操作符(<<)

规则:左边抛弃、右边补0
例如:
在这里插入图片描述

2.右移操作符(>>)

规则:

  1. 逻辑右移:左边⽤0填充,右边丢弃
  2. 算术右移:左边⽤原该值的符号位填充,右边丢弃
    注意:大多数编译器中是算术右移
    例如:
    逻辑右移:
    在这里插入图片描述
    算术右移:
    在这里插入图片描述
    注意:对于移位运算符,不要移动负数位,这个是标准未定义的

七、位操作符

注意:位操作符的操作数必须是整数

1.按位与(&)

计算规则:对应的二进制位(补码)进行与运算(只要有0就是0,两个同时为1才是1)
例如:

int main()
{
	int a = 3;
	int b = -5;
	int c = a & b;
	//按(2进制)位与
	//计算规则:对应的二进制位进行与运算
	//只要有0就是0,两个同时为1才是1
	//00000000000000000000000000000011 --- 3的补码
	//10000000000000000000000000000101 --- -5的原码
	//11111111111111111111111111111010 --- -5的反码
	//11111111111111111111111111111011 --- -5的补码
	//00000000000000000000000000000011 --- 3的补码
	//00000000000000000000000000000011
	printf("c = %d\n", c);//3
	
	return 0;
}

2.按位或(|)

计算规则:对应的二进制位(补码)进行或运算(只要有1就是1,两个同时为0才是0)
例如:

int main()
{
	int a = 3;
	int b = -5;
    int c = a | b;
	//按(2进制)位或
	//计算规则:对应的二进制位进行或运算
	//只要有1就是1,两个同时为0才是0
	//00000000000000000000000000000011 --- 3的补码
	//10000000000000000000000000000101 --- -5的原码
	//11111111111111111111111111111010 --- -5的反码
	//11111111111111111111111111111011 --- -5的补码
	//00000000000000000000000000000011 --- 3的补码
	//11111111111111111111111111111011
	//
	printf("c = %d\n", c);//-5

	return 0;
}

3.按位异或(^)

计算规则:对应的二进制位(补码)进行异或运算(相同为0,相异为1)
例如:

int main()
{
	int a = 3;
	int b = -5;
	int c = a ^ b;
	//按(2进制)位异或
	//计算规则:对应的二进制位进行异或运算
	//相同为0,相异为1
	
	//00000000000000000000000000000011 --- 3的补码
	//10000000000000000000000000000101 --- -5的原码
	//11111111111111111111111111111010 --- -5的反码
	//11111111111111111111111111111011 --- -5的补码
	//00000000000000000000000000000011 --- 3的补码
	//11111111111111111111111111111000
	//10000000000000000000000000000111
	//10000000000000000000000000001000
	//
	printf("c = %d\n", c);//-8

	return 0;
}

4.按位取反(~)

计算规则:对应的二进制位(补码)进行取反运算(0取反变为1,1取反变为0)
例如:

int main()
{
	int a = 1;
	int b = ~a;
	//00000000000000000000000000000001 -- 1的补码
	//11111111111111111111111111111110(补码)
	//10000000000000000000000000000001
	//10000000000000000000000000000010 
	//
	printf("%d\n", b);//-2

	return 0;
}

八、逗号操作符

exp1, exp2, exp3, …expN

逗号表达式,就是⽤逗号隔开的多个表达式(逗号操作符就是表达式中的“,”)
逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果

九、指针操作符

指针操作符分为两种:&取地址操作符*解引用操作符

1.取地址操作符(&)

例如:

//	int a = 100;
//	printf("%p\n", &a);//&取地址操作符(用%p打印取出的地址)
//	int * pa = &a;//pa 是指针变量 - 存放地址

2.解引用操作符(*)

例如:

//	int a = 100;
//	int * pa = &a;
//	*pa = 20;//* 是解引用操作符,*pa 等价于a
//	//即修改a为a = 20

十、求字节操作符(sizeof操作符)

sizeof 中C语⾔是⼀个关键字(sizeof不是函数),是可以计算类型或者变量⼤⼩的(sizeof计算的是变量或类型创建变量的内存大小,和内存里存放什么数据没有关系)
例如:

//	char arr[10] = "abcdef";
//	printf("%d\n", sizeof(arr));//计算整个数组的大小,该数组10个元素,每个元素1个字节,总大小=10*1=10
//	int a = 100;
//	printf("%d\n", sizeof(a));//a里面有一个元素,占四个字节1*4=4
//	printf("%d\n", sizeof(int));//也是4

总结

本文介绍了10种C语言常用操作符,作为C语言编程的最基础工具,操作符必须精通并且会使用。
最后,希望我的文章对大家的学习有帮助,有不足的地方也可以指出来。

在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值