if/else需要注意的地方

作者在 2007-09-01 08:05:00 发布以下内容

在有if/else这样的语句时,希望不要图省事而不去写一对大括号"{}".除非你对不使用大括号而带来的结果非常有信心.
我得举一个例子让大家明白我说的不是一堆废话.
#include "stdio.h"
#include "conio.h"
int main(void)
{
  int i,j;

  clrscr();
  scanf("%d,%d",&i,&j);
  if(i>0)
    if(i>10)
      printf("i>10\n");
    else
      printf("i>0 && i<=10\n");
  else
    if(i<-10)
      printf("i<-10\n");
    else
      printf("i>=-10 && i<=0\n");

  if(j>0)
    if(j>10)
      printf("j>10\n");
  else
    if(j<-10)
      printf("j<-10\n");
    else
      printf("j>=-10 && j<=0\n");
  getch();
  return 0;
}
大家可以运行一下,看一看结果是不是和你想象中的一样.
结果可能会让很多人失望.
例如:当i=20,j=-20的时侯,结果:i>10
那有人就会问,怎么没有:j<-10,大家可以回到程序中再去想一想,可能会知道其中的原因.
问题就是出现在:
  if(j>0)
    if(j>10)
      printf("j>10\n");
  else
    if(j<-10)
      printf("j<-10\n");
    else
      printf("j>=-10 && j<=0\n");
这段代码相当于:
  if(j>0)
  {
    if(j>10)
    {
      printf("j>10\n");
    }
    else
    {
      if(j<-10)
      {
        printf("j<-10\n");
      }
      else
      {
        printf("j>=-10 && j<=0\n");
      }
    }
  }
这下大家明白了吧.

我的C语言编程经验 | 阅读 2527 次
文章评论,共0条
游客请输入验证码