首页 百科知识 关系运算符和表达式ppt

关系运算符和表达式ppt

时间:2024-10-17 百科知识 版权反馈
【摘要】:前4种关系运算符的优先级相同,后两种运算符的优先级相同。

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

C语言有完整的一组关系运算符,用于比较两个运算分量间的大小关系。这组运算符有六个,即

img101

前4种关系运算符的优先级相同,后两种运算符的优先级相同。前4种的优先级高于后两种。例如,“〈”优先于“==”;而“〉”和“〈”优先级相同。

用关系运算符将两个分量连在一起构成的表达式称为关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。根据运算符所作用的两个运算分量之间的指定关系是否成立,得到关系表达式的值。例如:

  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,a〉=b,a==b

三个关系表达式的结果都为“假”。

怎样表示关系表达式的“真”、“假”逻辑值呢?由于C语言中没有逻辑型数据,因而借用数值来表示。C语言中规定:以数值0表示“假”,以非0表示“真”。对于关系表达式来说,结果的真、假分别用1和0表示。因此,在a为10,b为80的情况下,表达式a〈b的值(即结果)是1,而a==b的值是0。

关系运算只判定两个运算分量是否满足指定的关系,而不管二者具体数值相差多少。

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

  a〉b与a〉c

的结果都是1。并且,执行关系运算之后,其分量(如这里的a,b,c)的值都不发生变化。

应注意,赋值号“=”与相等比较运算符“==”的区别。例如,关系表达式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 分析下面程序的运行结果。

img102

程序运行分析:

第1行 //2-1.cpp运算符的优先级示例是注释行。

良好的编程习惯2.2

img104 每个程序的开始都应该有一个注释,描述这个程序的目的、作者、日期和时间(在本书的程序中,我们没有说明这些信息,是因为这些信息对教学示例程序来说没有太多实际的意义)。

第2行 #include 〈stdio.h〉是预处理命令,详细内容请参考本书7.8节。

常见的编程错误2.1

img105 在需要从键盘输入数据或者输出数据到屏幕的程序中,如果忘记包含〈stdio.h〉头文件,那么会导致编译错误。

第3行是空行。为了易于阅读程序,程序员常使用空行、空格和制表符来增加程序的可读性。

良好的编程习惯2.3

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

第4行 //main函数开始程序的运行,是一个单行注释,指出程序从下一行开始执行。

第8行分别对变量i、j、k赋值为60。

第10行,按照运算符优先级关系,表达式“i= j==k;”等价于i=(j==k)。所以,先执行j与k是否相等的比较,其结果是1;再执行i=1,把1赋值给变量i。所以,这条语句执行后,i的值是1,而j和k的值保持不变,仍然是原来的值60。

第11行printf()函数调用语句执行后输出结果是:

  i=1,j=60,k=60

第12行,圆括号括起来的表达式“(j=k++*2);”包含三个运算符,即:=、++和*,其中“++”的级别最高,“*”次之,“=”最低。所以,这个表达式就等价于j=((k++)*2)。由于k++是后缀形式,所以,先取出k的当前值(即60)乘以2,得到120,赋给变量j;然后k的自身增1,变为61。这个表达式是关系运算符“==”的右分量,其左分量是i,利用“==”,判别i的值(是1)是否等于右分量的值(即120),很显然两者不相等。但应注意,这个比较的结果(数值0)并没有赋予任何变量,从而不会影响运算分量的原有值。

第13行的printf()函数调用语句执行后输出结果是:

  i=1,j=120,k=61

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

  i=j〉k〉=100;

等价于i=((j〉k)〉=100);j〉k的结果为1,1〉=100的结果是0,最后把0赋给i。

第15条语句执行后输出结果是:

  i=0,j=120,k=61

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

  i=1,j=60,k=60

  i=1,j=120,k=61

  i=0,j=120,k=61

另外,在以上示例中关系运算符的运算分量都是整型量。其实,它们的两个运算分量既可以是整型的,也可以是浮点型的,还可以都是指针型的(将在第5章中介绍),但它们运算结果的类型都是int型(即1或0)。

常见的编程错误2.2

img107 遗漏了main()后面的括号对。

img108 遗漏或不正确地键入了开始大括号{,{表示函数体的起点。

img109 遗漏或不正确地键入了结束大括号},}表示函数体的终点。

常见的编程错误2.3

img110 函数名拼写错误,例如把printf()误写成print()。

img111 忘记printf()中的双引号配对。

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

良好的编程习惯2.4

img113 在限定函数体的花括号之间把整个函数体缩进一级。使程序可读性增强、函数结构清晰,使程序更易于纠错。

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

我要反馈