首页 百科知识 逻辑运算中各运算符的优先顺序

逻辑运算中各运算符的优先顺序

时间:2022-10-16 百科知识 版权反馈
【摘要】:一个变量或者常量就是最简单的关系表达式;使用关系运算符和圆括号将关系表达式连接得到新的关系表达式。对于关系表达式来说,结果的真、假分别用1 和0表示。关系运算符的优先级低于算术运算符,高于赋值运算符。按照优先级的高低,>和>=是同一级,且高于=的优先级;按照结合性——关系运算符的结合性是自左至右,所以,表达式关系运算符的操作数可以是整型数据、浮点型数据,也可以是指针型数据,但运算结果的类型都是int型。

2.4.3 关系运算符和关系表达式

C语言提供完整的关系运算符,用于比较两个数据之间的大小关系。

关系运算符运算符有六个,它们的优先级为

img62

一个变量或者常量就是最简单的关系表达式;使用关系运算符和圆括号将关系表达式连接得到新的关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。

  a>b  如果a大于b,则结果为真;否则为假。

  a>=b 如果a大于或等于b,则结果为真;否则为假。

  a<b  如果a小于b,则结果为真;否则为假。

  a<=b 如果a小于或等于b,则结果为真;否则为假。

  a= =b 如果a等于b,则结果为真;否则为假。

  a!=b  如果a不等于b,则结果为真;否则为假。

例如,a为10,b为80,那么,关系表达式

  a>=b

结果为假。

由于C语言中没有逻辑型数据,因而借用整数数值来表示“真”、“假”逻辑值。C语言中规定:以数值0表示假,以非0表示真。对于关系表达式来说,结果的真、假分别用1 和0表示。

关系运算只判定两个数据是否满足指定的关系,不考虑二者数值相差多少,也没有其他的操作。

例如,a为200,b为80,那么

   a>b

的结果是1。并且,执行关系运算之后,数据a和b的值都不发生变化。

应注意,赋值号=与相等比较运算符= =的区别。例如,关系表达式

  i= =500

判断i的值是否等于500;而赋值表达式

  i=500

将500赋予变量i。

关系运算符的优先级低于算术运算符,高于赋值运算符。其结合性是按照自左至右的顺序进行,即左结合性。例如,a=50,b=30,c=68,d=100,则

  a+b<c+d

相当于

  (a+b)<(c+d)

值为1。

  a<b>c

相当于

  (a<b)>c

a<b的结果为0,0>c的结果为0,整个表达式的值为0。

  x=a<b<c

先判断a<b<c,结果为1,然后再将1赋予x。

例2-1 分析下面程序的运行结果。

img63

按照运算符优先级关系,表达式

  i=j==k

等价于

  i=(j==k)

先进行j与k是否相等的比较,其结果是1;再将1赋予变量i。第10行的赋值语句执行后,i的值是1,而j和k的值保持不变,仍然是原来的值60。

第11行printf函数执行后输出结果是:

  i=1, j=60,k=60

表达式

  (j=k++*2)

包含三个运算符, ++的级别最高,*次之,=最低。

等价于

  j=((k++)*2)

由于k++是后缀形式,所以,先取出k的当前值(即60)乘以2,得到120,赋予变量j;然后k的自身增1,变为61。利用= =判断i的值(是1)是否等于j的值(即120)。应注意,这个比较的结果(数值0)并没有赋予任何变量。

第14行的语句中有三个运算符,即=、>和>=。按照优先级的高低,>和>=是同一级,且高于=的优先级;按照结合性——关系运算符的结合性是自左至右,所以,表达式

  i=j>k>=100

等价于

  i=((j>k)>=100)

j>k的结果为1,1>=100的结果是0,最后将0赋予i。

程序运行之后的输出结果是:

  i=1, j=60, k=60

  i=1, j=120, k=61

  i=0, j=120, k=61

关系运算符的操作数可以是整型数据(包括字符数据)、浮点型数据,也可以是指针型数据(将在第5章中介绍),但运算结果的类型都是int型(即1或0)。

对于浮点型数据,由于存储可能存在(极小)误差,不能够直接使用==运算符进行是否相等的比较,而应该采用

  fabs(fnumb1-fnum2)<1.0e-6

其中,fabs函数是求浮点数绝对值的库函数。

良好的编程习惯2.1

●每个程序的开始都应该有一个注释,描述这个程序的目的、作者、日期和时间(在本书的程序中,省略了这些信息)。

常见的编程错误2.1

●需要输入或输出数据,没有包含〈stdio.h〉头文件,会导致编译错误。

良好的编程习惯2.2

●使用空格和空行来增加程序的可读性。

常见的编程错误2.2

●遗漏了main函数的括号对。

●遗漏函数开始的左花括号{

●遗漏函数结束的右花括号}

常见的编程错误2.3

●函数名拼写错误,例如将函数printf误写成print。

●遗漏了每一条语句结束后的分号。

良好的编程习惯2.3

●将整个函数体缩进一级,使程序可读性增强、函数结构清晰。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈