c语言中运算符百分号的优先级高于,C语言中的运算符与优先级

1. 赋值运算符=

C语言中,赋值运算符将=号右边的值,赋值给=号左边的变量中。千万不要把=号当做数学中的等于。

将字面常量100赋值给整型变量a。

int a;

a = 100;

TIPS:

字面常量就是直接写在程序里面的不可变更的数据对象,例如:100,200,"hello",'a'。它们不需要声明,也不能被赋值。

将字面常量100赋值给整型变量a,将字面常量200赋值给b。a与b相加后的值300,赋值给c。

int a, b, c;

a = 100;

b = 200;

c = a + b;

下面几种赋值是错误的,字面常量不能被更改。

"Hello" = "HelloWorld";

'a' = 'b';

100 = 200;

2. 加法运算符+

加法运算符用于将两侧的值相加。100加200,为300。运算符作用于字面常量或变量均可。

int a;

int sum;

sum = 100 + 200;

int a, b, sum;

a = 100;

b = 200;

sum = a + b;

int a, sum;

a = 100;

sum = a + 200;

3. 减法运算符-

加法运算符用于将两侧的值相加。a的值等于100减200,为-100。

int a;

a = 100 - 200;

请注意,如果需要出现负值,请勿使用unsigned int。虽然,将unsigned int使用%d(有符号整型的转换符)来打印结果仍然是正确的。原因是,有符号和无符号整型数据表示方法一致。因此,使用%d来打印时,仍然可以得到正确的结果。但是,我们这里的类型是unsigned int,应当使用%u,以符合语义化。用%u打印会将最高位符号位看做数据位。所以,当无符号整型装了一个负数的时候,结果应当是溢出。具体原因请参照整型章节。

4. 符号运算符+、-

符号运算符用于表示一个数值是正数还是负数,它仅需要一个操作数据对象,被称之为一元运算符。而加法运算符、减法运算法,需要两个操作数据对象,被称之为二元运算符。

符号运算符+,我们一般省略不写+100,就是100。

a的值+100,被符号运算符-,转换为-100。之后再赋值给a。a的值最后变为-100。

int a = +100;

a = -a;// a的值+100,被符号运算符-,转换为-100。之后再赋值给a。a的值最后变为-100。

5. 二元运算符与一元运算符

b7c9d8c7eca379e5ce3bb215457956e9.png

b90523f99d3d08c8c343e8dce6dca3f3.png

8077ed395f386d2e10c2904418ed67ef.png

6. 乘法运算符*

*是乘法运算符,注意不要用字母x来表示乘法了。

c的值为10乘10,100。

int a, b, c;

a = 10;

b = 10;

c = a * b;

7. 除法运算符

/是除法运算符。

int a, b, c;

a = 5;

b = 2;

c = a / b;

a的值为5,b的值为2。那么5除以2,应该等于2.5。但是,好像用int来接收整型好像不太对。我们把c改为float或double。

int a, b, c;

a = 5;

b = 2;

c = a / b;

int a, b;

a = 5;

b = 2;

float c;

c = a / b;

printf("%f\n", c);

e1be370aa4f8bb8665a11182068a72c0.png

结果依然不对呢。我们来看看为什么。a,b都是整型,在C语言里面,整型与整型运算的结果,依然是一个整型,结果的小数部分被丢弃,这一过程被称作截断。a / b后,结果仍然是一个整型,数值已经被截断了,这时候,我们再赋给一个浮点型的c。也只能是整数2转成浮点2.0了,没有起到效果。

6b10a5d3da22a56fbbf46d64c3e1b921.png

那我们将a,b,c都改为float。这样就不会出现截断了。a , b将会进行浮点运算,结果也是一个浮点数类型float。

773e4b230b892f5f242ec72c7ea1d7bb.png

8. 求余运算符

%百分号,用于求余。例如:10除以3,等于3余1。

int a, b, c;

a = 10;

b = 3;

c = a % b;

3d6f6fbaedd2e1cb9090e8fa82677390.png

9. 自增、自减运算符

自增运算符++,和自减运算符--。用于将数据对象加1或减1。这两种运算符有两种形式,前缀模式和后缀模式。首先,我们来看一下前缀模式。++或--放置于数据对象前面。

65c3ad8bbb95af265528af1f67aea0f9.png

a被加了1,b被减了1,很好理解。

那么我们继续看一下后缀模式。++或--放置于数据对象后面。

d3b23bb4d4a8660255636d1f1bea5c95.png

后缀模式下,为什么第一次printf打印出来的a和b仍然都是10呢?而第二次打印出来的就是分别加一和减一的结果了。

自增运算符在后缀模式下:先对数据对象进行自增或自减操作。但是,返回数据对象原先的值。

那我们来解释一下,为什么第一个printf打印的是10。首先++和--都对a和b进行了自增、自减操作。所以,a的值是11,b是9。但是,++,和--运算符,返回了原先的值,传进了printf。那么,进入printf函数的a和b依然都是10。

下面的例子中,请记住后缀++或--,其实已经改变了数据对象的值了。但是,它返回并继续参与运算的数值,仍然是原始值。

a5296936ce57c0ddd83de594213d8446.png

10. 运算符优先级

C语言的四则运算符和数学里面的一致。先算括号里面的,先乘除后加减。

下表是常用的运算符优先级表格

标记

操作符

类型

优先级

结合性

++ --

自增、自减

后缀

16

从左到右

++ --

自增、自减

前缀

15

从右到左

+ -

正号,负号

单目

15

从右到左

* / %

乘、除、取余

双目

13

从左到右

+ -

加、减

双目

12

从左到右

=

赋值

双目

2

从右到左

优先级越高的,在运算里面,需要被优先处理。例如:乘除优先级为13大于加减的12。

其中,结合性是指,从左往右运算符还是从右往左运算符。

12 / 3 * 2,我们应当先算12 / 3得4,之后4 * 2得8。这是从左到右的结合性。

先算3 * 2得6,再算12 / 6得2,这是从右到左的结合性。显然,乘除应当是从左到右的结合性。

我们之前常常用到的赋值,为什么先把=号右边的算完,再将结果给左边的变量呢?因为,赋值是一个优先级运算符,并且结合性从右向左的运算符。所以,我们往往先将赋值号右边的优先级高的计算完之后,再算赋值,从右向左,赋给左边的变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值