分享

if语句常见问题解析

 217小月月坑 2015-07-22

if常见问题解析
 1. 空语句的问题
  if (3>2);
  等价于
  if (3>2)
   ;  //这是一个空语句

 2.
  if (表达式)
   A;
  else
   B;
  是正确的

  if (表达式);
   A;
  else
   B;
  是错误的,这相当于if..;是一个语句,else..;是一个语句,而C语言中并没有else开头的语句

  换言之:if..else必须配套使用,可以有if没有else,但是不能只有else没有if

 3.
  if(表达式1)
   A;
  else if(表达式2)
   B;
  else if(表达式3)
   C;
  else
   D;

  这是一个选择结构,只能四选一,即便表达式1和2都成立,也只会执行语句A
  只要有一个条件成立且语句被执行,则后面的条件不再判断

 4.
  if(表达式1)
   A;
  else if(表达式2)
   B;
  else if(表达式3)
   C;
  
  这样写语法上没有错误,但是逻辑上会有漏洞

 5.
  if(表达式1)
   A;
  else if(表达式2)
   B;
  else if(表达式3)
   C;
  else  (表达式4)
   D;

  这样写是不对的,要么就把(表达式4)去掉,要么就使用else if

 6.
  if(表达式1)
   A;
  else if(表达式2)
   B;
  else if(表达式3)
   C;
  else  (表达式4);
   D;

  这样写语法上是不会出错的,但逻辑上是错误的

  else  (表达式4);
   D;
  等价于
  else
   (表达式4);
  D;

 

/* 示例代码 if空语句问题 **
 * 时间 2015-7-22 20:01 **/

# include <stdio.h>

int main()
{
 
 if (3 > 2)
  printf("aaaa\n");
 if (1 > 2);  //注意!!!这是一个空语句,对比去掉分号时的效果
  printf("bbbb\n");
 
 system("pause");
 return 0;
}

/*
 输出结果:
-------------------
aaaa
bbbb
请按任意键继续. . .
------------------- 
*/


/* 示例代码 if..else if..else常见问题 **
 * 时间 2015-7-22 20:05              **/

# include <stdio.h>

int main()
{
 
 if (3 > 2)
  printf("aaaa\n");
 else if (4 > 2)
  printf("bbbb\n");
 else if (5 > 2)
  printf("cccc\n");
 else
  printf("dddd\n");
 
 system("pause");
 return 0;
}

/*
 输出结果:
-------------------
aaaa
请按任意键继续. . .
------------------- 
 结果分析:
 if..else if..else结构是一个多选一的结构
 只能当一个成立并且执行时后面的语句不再判
 断,因此,设计时要注意好逻辑问题
*/


/* 示例代码 if语句常见问题 **
 * 时间 2015-7-22 20:10   **/
# include <stdio.h>

int main()
{
 
 if (3 > 2)
  printf("aaaa\n");
 else if (4 > 2)
  printf("bbbb\n");
 else if (5 > 2)
  printf("cccc\n");
 else (6 > 2)
  printf("dddd\n");
 
 system("pause");
 return 0;
}

/*
 输出结果:
------------------->>
Error 1 error C2146: syntax error : missing ';' before identifier 'printf' 
------------------->>
*/

 


/* 示例代码 if语句常见问题 **
 * 时间 2015-7-22 20:10   **/
# include <stdio.h>

int main()
{
 
 if (3 > 2)
  printf("aaaa\n");
 else if (4 > 2)
  printf("bbbb\n");
 else if (5 > 2)
  printf("cccc\n");
 else (6 > 2);  //加了分号之后(6 > 2);就是一个语句,但是没有实际意义
  printf("dddd\n");
 
 system("pause");
 return 0;
}

/*
 输出结果:
-------------------
aaaa
dddd
请按任意键继续. . .
-------------------
*/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多