【C语言】操作符详解

这期博客,给大家讲讲C语言中的操作符家族! 

1. 操作符的分类

操作符的种类如下:

• 算术操作符: + 、- 、* 、/ 、%

• 移位操作符: << >>

• 位操作符: & | ^ 

• 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=

• 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)

• 关系操作符: > 、>= 、< 、<= 、 == 、 !=

• 逻辑操作符: && 、||

• 条件操作符: ? :

• 逗号表达式: , ,

• 下标引⽤: [ ]

• 函数调⽤: ()

• 结构成员访问: . 、->

接下来我们详细学习一下!

2. 算术操作符:+、-、*、/、%

在写代码时候,⼀定会涉及到计算。

C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。

分别是: + - * / % ,这些操作符都是双⽬操作符。

2.1 + 和 -

+ 和 - ⽤来完成加法和减法。

+ 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。

#include <stdio.h>

int main()
{
    int x = 4 + 22;
    int y = 61 - 23;

    printf("%d\n", x);//26
    printf("%d\n", y);//38

    return 0;
}

2.2 *

运算符 * ⽤来完成乘法。

#include <stdio.h>

int main()
{
    int num = 5;
    printf("%d\n", num * num); // 输出 25
    return 0;
}

2.3 /

运算符 / ⽤来完成除法。

除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数

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

尽管x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是1.5 。

原因就在于 C 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。

而让结果得到的是小数,则需让除号两边至少一个数为小数

#include <stdio.h>

int main()
{
	float x = 6.0 / 4;
	float y = 6 / 4.0;
	float z = 6.0 / 4.0;

	printf("%f\n", x); 
	printf("%f\n", y);
	printf("%f\n", z);

	return 0;
}

运行结果: 

这样计算就都是小数了。

2.4 %

运算符 % 表示求模运算,即返回两个整数相除的余值。

取模的对象不能为0,且不能为浮点型,必须为整数!


#include <stdio.h>
int main()
{
	int x = 6 % 4; //6/4 商1余数2,所以6%4是2
	return 0;
}

负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。
 

#include <stdio.h>

int main()
{
    printf("%d\n", 11 % -5); // 1
    printf("%d\n",-11 % -5); // -1
    printf("%d\n",-11 % 5); // -1
    return 0;
}

上面示例中,11 或 -11 决定了结果的正负号。

2. 赋值操作符:=和复合赋值

在变量创建的时候给⼀个初始值叫初始化,

在变量创建好后,再给⼀个值,这叫赋值。

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

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

 2.1 连续赋值

赋值操作符也可以连续赋值,如

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。

 但是写出的代码不容易理解,建议还是拆开来写

int a = 3;
int b = 5;
int c = 0;
b = a+3;
c = b;

这样写,让我们通俗易懂他的复制整个过程 

2.2 复合赋值符

在写代码时,我们经常可能对⼀个数进⾏⾃增、⾃减的操作,如下代码:

int a = 10;
a = a+3;
a = a-2;

 C语⾔提供了更加⽅便的写法:

int a = 10;
a += 3;
a -= 2;

C语⾔中提供了复合赋值符,⽅便我们编写代码,这些赋值符有:
 

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

3. 单⽬操作符:++、--、+、-

前⾯介绍的操作符都是双⽬操作符,有2个操作数的。C语⾔中还有⼀些操作符只有⼀个操作数,被称为单⽬操作符。 ++(自增)、-- (自减) 、+(正)、-(负) 就是单⽬操作符的。

3.1 ++和--

++是⼀种⾃增的操作符,⼜分为前置++和后置++,--是⼀种⾃减的操作符,也分为前置--和后置--.

3.1.1 前置++

int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);

计算⼝诀:先+1,后使⽤;

 a原来是10,先++,后a变成了11,再使⽤就是赋值给b,b得到的也是11,所以a和b都是11

3.1.2 后置++

int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

 计算⼝诀:先使⽤,后+1

a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,

所以a是11,b是10

3.1.3 前置--

与前置++同理,前置--类似,只是把加1,换成了减1; 计算⼝诀:先-1,后使⽤
 

int a = 10;
int b = --a;//--的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 9

3.1.4 后置--

同理后置--类似于后置++,只是把加⼀换成了减⼀ 计算⼝诀:先使⽤,后-1
 

int a = 10;
int b = a--;//--的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 10

3.2 + 和 -

这⾥的+是正号,-是负号,都是单⽬操作符。

运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。

int a = +10;// 等价于 int a = 10;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值