C程序设计导引(2)

3

3.0 C语言三类控制结构

顺序结构

选择结构(分支结构,条件语句,Selection Structure)

重复结构(循环结构,循环语句,Loop Structure)

3.1 关系运算符和逻辑运算符

关系运算符

<<=>>=  左端小于、小于等于、大于、大于等于右端时返回值为1,否则为0。C语言中无布尔类型所以在判断的时候,0为假,非零都为真。

==!=        左端等于、不等于右端时返回值为1,否则为0

运算符亦具有优先级,第一行中的运算符优先级大于第二行。同一行中的运算符具有相同的优先级。

逻辑运算符

&& 与,|| 或,!非

1) 与运算(&&)
同真则真,否则为假。例如:
7>0 && 2>1
二者的结果都为真(1),相与的结果也为真。

2) 或运算(||)
参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:
5>4 || 5>8
由于5>4为真,相或的结果也就为真。

上面两种运算都是有两个参数的双目运算符。同时,有些情况下只要第一个参数的结果算出,表达式的结果也就知道了(如与运算第一个表达式值为假,或运算第一个值为真),这时候就不会再算右边的表达式。这种规则称为“短路求值”。


3) 非运算(!)
表达式结果为真时,结果为假;表达式结果为假时,结果为真。例如:
    !(5>0)

结果为假(0)。

 

3.2 运算符的优先级

四则运算符>关系运算符>逻辑运算符

逻辑运算符中,优先级为“非”>“与”>“异或”>“或”

值得注意的是双目运算符如与,异或等都是“短路求值”。也就是说如果计算左边就知道答案的话,运算符右边的表达式就不会运行了。

 

3.3 条件语句

1)条件语句有两种,第一种是if语句,第二种是if else语句。

句法格式如下:

if  (<表达式>)  <语句>

在这个语句中,表达式描述后面的语句可以执行的条件。括号内表达式非0时,条件为真,否则为假。如果为真则执行语句,否则不执行。

一个例子:

if (a%2==0)

  printf(“%d是偶数
”,a);

if  (<表达式>)  <语句1>  else  <语句2>

if (a%2==0)

  printf(“%d是偶数
”,a);

else

  printf(“%d是奇数
”,a);

 

2)如果一个语句不满足我们的需要,我们就要使用复合语句。

下面是一个例子:

{

  double a,b;

  a=x+y; b=x-y;

  z=a*a+b*b;

}

 

之前例子中的<语句><语句1><语句2>都可以使单条语句,也可以是复合语句。

不仅如此,我们还可以对条件语句进行嵌套(不再举例)和级联,编译器总是把else与它之前最近的if联系起来

if (表达式1) 语句1

else if (表达式2) 语句2

…

else 语句n+1

这里需要注意的是,若进行比较的是浮点数,通常不能直接使用“==”和“!=”,而应该在写成fabs(x-a)<EPS。EPS是最大允许的误差,而fabs是对浮点数取绝对值的标准库函数。 

 

(3)还有一类运算符叫做条件运算符,即形如?:”的三元运算符。由条件运算符及其运算对象构成的表达式被称为条件表达式。语法格式如下:

<表达式1><表达式二>:<表达式3>

当表达式1为真时计算表达式2的值作为条件表达式的值,否则计算表达式3的值作为条件表达式的值。

 

3.5  switch语句

switch语句是一种多路选择的分支结构,语法格式如下:

switch(<控制表达式>){

case <常量表达式1>:语句序列1

case <常量表达式2>:语句序列2

...

case <常量表达式n>:语句序列n

default:<语句序列n+1>

}

default及其所对应的语句序列是可选项,任何一个case所对应的语句序列也可以为空,每个常量表达式的类型必须是整形且各不相同。default后面的语句会在控制表达式的值未在任何一个case中出现时执行。

case后面接多条语句时不需要放在{}中;若连续的case之间没有语句,则他们执行同样的语句。

原文地址:https://www.cnblogs.com/Shymuel/p/8439230.html