6.从零开始学习C语言--if判断语句

时间:2022-12-28 09:04:48

选择执行(判断语句)

C语言中,选择执行语句有两种:ifswitch

主要讲讲if语句

 

if最简单的用法:

格式:if(表达式)

                   语句;

功能:表达式为真,则执行语句;表达式为假,则跳过语句执行程序的下面的代码。

---------------------------------------

if的控制范围:

1、  if(表达式)

语句A//属于If控制

语句B//不属于if控制

         此时if只能控制紧临的第一种语句执行或不执行;

2、  if(表达式)

{

           语句A

           语句B

}

此时if可以控制{}内的所有的语句;

在一般情况下,为了代码的整齐、易懂,就算只有一条语句要控制,也会用{}括起来。

---------------------------------------

if…else…的用法:

if(表达式)

{语句A;}

else

{语句B;}

如果表达式为真,则执行A语句,否则执行B语句;

else的控制范围和if一样。

---------------------------------------

if…else if…else…的用法:

if(表达式1)

{语句A;}

else if(表达式2)

{语句B;}

else

{语句C;}

表达式1为真,则执行语句A,否则,表达式2为真,则执行语句B,如果表达式12都为假,则执行语句C

---------------------------------------

if常见问题解析:

1.       判断区间数

判断区间数时,不能写成 i < xxx < i ,因为编译器执行顺序是先比较 xxx < i 的情况,把得到的结果再来和后面的 xxx 比较,而 xxx < i 的结果是逻辑值,不是0就是1,是固定的,没法再和后面的 xxx 比较,应该写成(i > xxx  &&  i < xxx;

 

2.       两个变量值互换

互换两个变量的值,必须要使用到第三人变量,这个变量一般申明为t,即temporary(临时的)

int i = 5;

int j = 10;

int t = 0;

t = i;

i = j;

j = t;

 

3.       数值排序,如:把一列数从大到小排列

这个要用到冒泡算法的思想,拿第一个数与后面的数相比较

当第一个数大的时候,什么都不变,继续与下一个数比较,

当第一个数小的时候,把第一个数与较大的那个数互换,

以此类推,全部比较完后,第一个数就是最大的数,

再依次把第二大的、第三大的排序出来;

 

4.       关于空语句

C语言中,分号;表示一段语句的结束,常常有人误把if的格式写成:“if(表达式);”,这样相当于:

if(表达式)

      空语句;

这样从语法上说是没有错误的,但是逻辑上有错误,因为If条件为真是,执行一段空语句,也就是什么都不执行;

 

5.       关于if…else if…else…语句条件都成立时的情况

if(表达式1)

{语句A;}

else if(表达式2)

{语句B;}

else

{语句C;}

         对于这段if语句,即便表达式123都成立,也只会执行语句A,执行完后,跳转到if语句外的程序代码;

 

6.        关于if范围使用错误

if(表达式1)

语句A;

语句B;

else if(表达式2)

语句C;

else

语句D;

首先,因为if的控制范围,语句B把整个if语句都分隔开,成为三个语句,在语法上,没有哪个语句是else开头;

 

7.       关于else_1

if(表达式1)

语句A;

else if(表达式2)

语句B;

else(表达式3)

语句C;

这样写是不对的,因为else后面要跟一个完整的语句,而没有哪一个语句是“(表达式)语句C”这样的

 

8.       关于else_2

if(表达式1)

语句A;

else if(表达式2)

语句B;

else if(表达式3)

语句C;

这样写,语法上是对的,但是逻辑上有缺陷,因为不能包含所有的情况。