淘先锋技术网

首页 1 2 3 4 5 6 7

一.关系运算符和表达式
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。

(1)关系运算符及优先次序
在C语言中有以下关系运算符:
1.< 小于
2. <= 小于或等于
3. > 大于
4. >= 大于或等于
5. == 等于
6. != 不等于

在六个关系运算符中,<,<=,>,>=的优先级相同,高于== 和!=,==和!=的优先级相同。

(2)关系表达式
关系表达式的一般形式:表达式 关系运算符 表达式

例如:
a+b>c-d
x>3/2
‘a’+1<c
-i-5*j==k+1
都是合法的关系表达式。由于表达式也可以又是关系表达式, 因此也允许出现嵌套的情况。

例如:
a>(b>c)
a!=(c==d)

关系表达式的值是真”和“假”,用“1”和“0”表示。

例如:
5>0 的值为“真”,即为 1。
(a=3)>(b=5)由于 3>5 不成立,故其值为假,即为 0。

二.逻辑运算符和表达式

(1)逻辑运算符及优先次序
C语言中提供了三种逻辑运算符:

  1. && 与运算
  2. || 或运算
  3. ! 非运算

与运算符"&& “和或运算符”||“均为双目运算符。具有左结合性。非运算符”!"为单目运算符,具有右结合性。

“&&”和“||”低于关系运算符,“!”高于算术运算符。
按照运算符的优先顺序可以得出:

a>b && c>d 等价于 (a>b)&&(c>d)
!b==c||d<a 等价于 ((!b)==c)||(d<a)
a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)

(2)逻辑运算的值
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。

  1. 与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。
  2. 或运算||:参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。
    3.非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。

(3)逻辑表达式
逻辑表达式的一般形式:表达式 逻辑运算符 表达式
其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。

例如:
(a&&b)&&c
逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”

三.if 语句
(1)if 语句的三种形式
1.if (表达式) 语句
其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。

2.if-else

if(表达式) 
   语句1;
else
   语句2;

其语义是:如果表达式的值为真,则执行语句 1,否则执行语句 2 。
3.if-else-if

if(表达式 1)
   语句 1;
else if(表达式 2)
       语句 2;
else if(表达式 3)
      语句 3;
…
else if(表达式 m)
        语句 m;
else
      语句 n;

其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个 if 语句之外继续执行程序。 如果所有的表达式均为假,则执行语句 n。然后继续执行后续程序。

(2)条件运算符和条件表达式
条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:

表达式1 ? 表达式2: 表达式3

其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。

注意:
1.条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。

例如:

max=(a>b)?a:b

可以去掉括号而写为

max=a>b?a:b
  1. 条件运算符?和:是一对运算符,不能分开单独使用。
  2. 条件运算符的结合方向是自右至左。

例如:

 a>b?a:c>d?c:d

应理解为

   a>b?a:(c>d?c:d)

这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。

四.switch 语句
C语言还提供了另一种多分支选择的switch语句,其一般表达式为:

switch(表达式)
{
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case 后的语句。如表达式的值与所有 case 后的常量表达式均不相同时,则执行 default 后的语句。