C语言中的运算符

Python030

C语言中的运算符,第1张

简单赋值运算符记为“=”,由“= ”连接的式子称为赋值表达式。欢迎大家阅读!更多相关信息请关注相关栏目!

无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)

C语言中的运算符

无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)

一、赋值运算符

赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。

注意:赋值语句左边的变量在程序的其他地方必须要声明。

得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。

例如:

count=5

total1=total2=0

第一个赋值语句大家都能理解。

第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0然后total1=total2那么我们这样行不行呢?

(total1=total2)=0

这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。

二、算术运算符

在C语言中有两个单目和五个双目运算符。

符号

功能

单目正

单目负

乘法

除法

取模

加法

减法

下面是一些赋值语句的例子,

在赋值运算符右侧的表达式中就使用了上面的算术运算符:

Area=Height*Width

num=num1+num2/num3-num4

运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。

取模运算符(%)用于计算两个整数相除所得的余数。例如:

a=7%4

最终a的结果是3,因为7%4的余数是3。

那么有人要问了,我要想求它们的商怎么办呢?

b=7/4

这样b就是它们的商了,应该是1。

也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。

怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:

a=(int)

(7.0/4)

因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float)

(7/4)最终a的结果是多少?

单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。

单目加运算符没有意义,纯粹是和单目减构成一对用的。

三、逻辑运算符

逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。

符号

功能

&&

逻辑与

逻辑或

逻辑非

例如:

5!3

0||-2&&5

!4

当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。

还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:

a=2,b=1

a||b-1

因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。

四、关系运算符

关系运算符是对两个表达式进行比较,返回一个真/假值。

符号

功能

>

大于

<

小于

>=

大于等于

<=

小于等于

等于

不等于

这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。

一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:

if(Amount=123)

很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123)

……

C语言逻辑运算符分别是:或(||)、且(&&)、非(!),分别对应于命题逻辑中的 OR、AND、NOT运算。

逻辑运算符:或 ||。在命题逻辑中,当P=1或Q=1时,P||Q等于1。

逻辑运算符:且 &&。在命题逻辑中,当P=1且Q=1时,P&&Q才等于1。

逻辑运算符:非 !。在命题逻辑中,当P等于0时,!P等于1,反之亦然。

C语言的运算符号

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补0)位移。例如,将11100011右移3比特,算术右移后成为11111100,逻辑右移则为00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

以上内容参考  百度百科-C语言

C语言中算术运算符有以下这些

实例:

#include <stdio.h>

int main()

{

int a = 21

int b = 10

int c 

c = a + b

printf("Line 1 - c 的值是 %d\n", c )

c = a - b

printf("Line 2 - c 的值是 %d\n", c )

c = a * b

printf("Line 3 - c 的值是 %d\n", c )

c = a / b

printf("Line 4 - c 的值是 %d\n", c )

c = a % b

printf("Line 5 - c 的值是 %d\n", c )

c = a++ // 赋值后再加 1 ,c 为 21,a 为 22

printf("Line 6 - c 的值是 %d\n", c )

c = a-- // 赋值后再减 1 ,c 为 22 ,a 为 21

printf("Line 7 - c 的值是 %d\n", c )

return 0

}

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - c 的值是 31

Line 2 - c 的值是 11

Line 3 - c 的值是 210

Line 4 - c 的值是 2

Line 5 - c 的值是 1

Line 6 - c 的值是 21

Line 7 - c 的值是 22

扩展资料:

C语言中,除了算数运算符,还提供以下运算符:

1、关系运算符

2、逻辑运算符

3、位运算符

4、赋值运算符

5、杂项运算符

运算符优先级:

C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。

在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

运算符结合性:

C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。

如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。

最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

参考资料来源:百度百科-C语言运算符