一篇文章带你玩转C语言基础语法3:运算符,运算符的基本用法【千字总结】

举报
光之梦 发表于 2023/10/13 09:49:34 2023/10/13
【摘要】 本文用通俗易懂的口语介绍了C语言的基础语法:运算符,还介绍了运算符的基本用法。 我的目标是:用通俗易懂的口语来为大家带来我自己对C语言基础语法的理解,想让零基础小白也能看懂学会并且能够掌握C语言的基础语法

我的个人主页光之梦的博客_云社区-华为云 (huaweicloud.com)

欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,我会第一时间改正。非常感谢!

初学者推荐用的刷题网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com)

特别标注本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。关注博主,学习不迷路哦

一、运算符

 1.1 定义

运算符是指进行运算的动作,比如加法运算符"+",减法运算符"-"

算子是指参与运算的,这个值可能是常数,也可能是变量,还可能是一个方法的返回值


1.2 单目运算符

只有一个算子的运算符:+,-

例如-a,-b,+a,+b


常用的单目运算符:

+                                                       正值

-                                                        负值

!                                                     逻辑反

&                                                      取地址

sizeof                                             操作数的类型长度(计算的是变量/类型所占空间的大小,单位是字节)

~                                                     对一个数的二进制按位取反

(类型)                                         强制类型转换


1.3 双目运算符

我们已知,只有一个算子的运算符是单目运算符

那么,两个算子的运算符就是双目运算符

如:a+b,b-a

那么,有三个算子的运算符就是三目运算符


1.4 赋值运算符

赋值(=)也是运算,也有结果

举个栗子

a=6的结果是a被赋予的,也就是6

a=b=6 在计算机中可以看成是: a = (b=6),也就是,把6赋给b(此时b的值就是6),然后把b的值(6)赋给a,所以a的值也是6


=  +=  -=  *=  /=  &=  ^=  I=  >>=  <<=

用法:

a+=3              相当于:a=a+3

a*=6               相当于:a=a*6

代码如下:

#include <stdio.h>

int main()
{
    int a=6,b=6;                  //初始化
    
    a+=3;                         //计算
    b=b+3;
    
    printf("a=%d,b=%d\n",a,b);     //输出运算结果
     
    return 0;
}
运行结果:
a=9,b=9

解析:a+=3    相当于   a=a+3     把a=6的值代入得:a=6+3       a的值:9


1.5 运算符优先级



1.6 算数运算符(特别重要)

+                                       加法运算符  

-                                        减法运算符

*                                        乘法运算符

/                                        除法运算符

%                                      取余运算符


/ 的用法

int a,b,c,d,e,f,g;

a=5/2;
b=12345/10000;
c=12345/1000;
d=12345/100;
e=12345/10;

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d",a,b,c,d,e);
运行结果:
a=2
b=1
c=12
d=123
e=1234

解析:a=5/2         

5/2=2.5,由于a是整型(int),整形不包含小数部分,在计算时会把小数部分全部舍弃,所以a=5/2中a的结果是2

b=12345/10000  与e=12345/10    (我的想法12345/10000,除数有几个零,被除数就舍弃几位数,如12345/10000,除数有4个零,那么被除数就舍弃后面四位数,所以答案就是:1)

由于b与e是整型(int),整形不包含小数部分,在计算时会把小数部分全部舍弃

所以b的值为1,e的值为1234。计算过程如下:

% (取余) 的用法

int a,b,c,d,e;

a=1%3;
b=1%2;
c=30%90;
d=12345%10000;
e=12345%10;

printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d",a,b,c,d,e);
运行结果
a=1
b=1
c=30
d=2345
e=5
解析:


 a=1%3,c=30%90的解析如上 ,1向3取余,1除以3余1。同上30%90=30      

1%2  1向2取余   1除以2=0.5,由于是int类型会舍弃小数,所以1/2的值只能是0,所以原来的除数1,还会留下了,所以1%2=1


d=12345%10000,e=12345%10

 如图,所以12345除以10000的余数就是:2345,12345除以10,余5

所以  :d=12345%10000=2345,e=12345%10=5


1.7 关系运算符

==                                    判断相等

!=                                   不等于

>                                       大于

<                                       小于

>=                                    大于等于

<=                                    小于等于


关系运算符的结果:判断如果结果是 true(真) 则为 1

                                 判断如果结果是 false(假)则为 0


用法:

int a=7,b=3,c;

a==b        //的值是0,因为a不等于b,所以是false(假),所以值是0
a!=b        //的值是1,a不等于b,判断正确,所以是true(真),所以值是1


1.8 逻辑运算符

逻辑运算是对逻辑量进行的运算,结果只有0或者1

逻辑量关系运算逻辑运算的结果



用代码表示:a大于等于1,小于等于6

a>=1 && a<=6;
逻辑优先级

!>&&>||


短路:

  1. 逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算了
  2. 对于&&,左边是false时就不会做右边的运算了
  3. 对于||,左边是true时就不会做右边的运算了
  4. 不要把赋值,包括复合赋值组合进表达式


总体优先级排名:

优先级

运算符

结合性

1

()

从左到右

2

!+- ++ --

从右到左(单目的+和-)

3

  • / %

从左到右

4

+ -

从左到右

5

< <= > >=

从左到右

6

== !=

从左到右

7

&&

从左到右

8

||

从左到右

9

= += -= *= /= %=

从右到左

1.9 位运算符

&                                          按位与

I                                           按位或

<<                                         左移                                        

>>                                         右移


1.10 条件运算符

?  :   ;

如:

int count=30;

count = (count>20)?count-10:count+10;

意思是如果条件满足,count如果>20;则count-10,否则就是执行count+10
也就是说:当count>20是的时候执行前者,是执行后者

优先级:条件运算符的优先级高于赋值运算符,但是低于其他运算符


1.11 逗号运算符

逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的就留下来作为逗号运算的结果


各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

 👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。