C语言的操作符(运算符)家族

目录

1.算数操作符:+、-、*、/、%

1.1分类

​编辑1.2注意

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

2.1连续赋值

2.2复合赋值符

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

3.1++和--

3.2前置++或--

3.3前置++或--

3.4+和-(单目操作符)

4.关系操作符

4.1介绍

4.2注意

5.逻辑操作符:!,&&,||

5.1分类

5.2短路

6.条件操作符

7.强制类型转化

8.位运算符

9.杂项运算符 ↦ sizeof & 三元

10.运算符优先级


1.算数操作符:+、-、*、/、%

     我们在写代码时候,⼀定会涉及到计算。 在C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % , 这些操作符(因为有两个操作数)都是双⽬操作符
注: 操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。

1.1分类

假设变量 A 的值为 10,变量 B 的值为 20,则:

C语言的操作符(运算符)家族_第1张图片1.2注意

1.运算符 / ⽤来完成除法。 除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数

#include 
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 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
那怎样才能使结果为浮点数呢?
两个运算数必须⾄少有⼀个浮点数 ,这时 C 语⾔就会进⾏浮点数除法。
#include 
int main()
{
 float x = 6.0 / 4; // 或者写成 6 / 4.0
 printf("%f\n", x); // 输出 1.500000
 return 0;
}

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

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

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

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

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

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

2.1连续赋值

赋值操作符也可以连续赋值,如:
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。

但是,这样写出来的代码不易理解。所以,写代码时还是建议分开写。

2.2复合赋值符

在C语言中,我们会常常使用一些复合赋值符来简化我们的代码

C语言的操作符(运算符)家族_第2张图片

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

只有⼀个操作数,被称为单⽬操作符。

3.1++和--

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

3.2前置++或--

口诀:先+1或-1后使用

a原来是10,先+1(-1),后a变成了11(9),再使⽤就是赋值给b,b得到的也是11(9),所以计算技术后,a和b都 是11(9),相当于:
int a = 10;
a = a+1;//or a = a-1;
b = a;
printf("a=%d b=%d\n",a , b);

3.3前置++或--

口诀:先使用,后+1或-1

a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1(或-1),然后a变成了11(9),所以直接结束后a是11(9),b是10,相当于:
int a = 10;
int b = a;
a = a+1;//or a = a - 1;
printf("a=%d b=%d\n",a , b);

3.4+和-(单目操作符)

运算符 + 对正负值没有影响 ,是⼀个完全可以省略的运算符,但是写了也不会报错。
运算符 - ⽤来 改变⼀个值的正负号 ,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负
数。

4.关系操作符

4.1介绍

       C 语⾔⽤于⽐较的表达式,称为 “关系表达式”(relational expression),⾥⾯使⽤的运算符就称为“关系运算符”(relational operator),主要有下⾯6个。
> ⼤于运算符
< ⼩于运算符
>= ⼤于等于运算符
<= ⼩于等于运算符
== 相等运算符
!= 不相等运算符
假设变量  A 的值为 10,变量  B 的值为 20,则:
C语言的操作符(运算符)家族_第3张图片

4.2注意

1.关系表达式通常返回 0 1 ,表⽰真假。
2.C 语⾔中, 0 表⽰假,所有⾮零值表⽰真 。⽐如, 20 > 12 返回 1 12 > 20 返回 0
3.相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。
4.多个关系运算符不宜连⽤。
i < j < k
上⾯⽰例中,连续使⽤两个⼩于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的:
(i < j) < k
上⾯式⼦中, i < j 返回 0 1 ,所以最终是 0 1 与变量 k 进⾏⽐较。如果想要判断变量 j
的值是否在 i k 之间,应该使⽤下⾯的写法:
i < j && j < k

5.逻辑操作符:!,&&,||

5.1分类

! :逻辑取反运算符(改变单个表达式的真假)。
&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。 全真则真,一假则假
|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。 一真则真
注:C语⾔中,⾮0表⽰真,0表⽰假

5.2短路

        C语⾔逻辑运算符总是先对左侧的表达式求值,再对右边的表达式求值,如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

如:

if(month >= 3 && month <= 5)
表达式中&& 的左操作数是 month >= 3 ,右操作数是 month <= 5 ,当左操作数 month >= 3
结果是0的时候,即使不判断 month <= 5 ,整个表达式的结果也是0,所以, 对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。
对于||:
|| 操作符的左操作数的结果不为0时,就⽆需执⾏右操作数。
像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短路求值。

6.条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
       条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。 简单地说:如果1为真,结果为2;如果1为假,结果为3.像这样的表达式被称为 条件表达式
如: 使⽤条件表达式实现找两个数中较⼤值。
#include 
int main()
{
 int a = 0;
 int b = 0;
 scanf("%d %d", &a, &b);
 int m = a>b ? a : b;
 printf("%d\n", m);
 
 return 0;
}

7.强制类型转化

在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单,形式如下:
 (类型)

如:

int a = 3.14;
//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
为了消除这个警告,我们可以使⽤强制类型转换:
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分

8.位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

C语言的操作符(运算符)家族_第4张图片

位操作符运算时是用二进制数进行运算的

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

下表显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

C语言的操作符(运算符)家族_第5张图片

C语言的操作符(运算符)家族_第6张图片

9.杂项运算符 ↦ sizeof & 三元

C语言的操作符(运算符)家族_第7张图片

10.运算符优先级

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

C语言的操作符(运算符)家族_第8张图片

有关C语言操作符的知识就说到这里来,希望能帮到大家!

你可能感兴趣的:(C语言学习,学习,c#,c语言)