if语句学习笔记

分支语句和循环语句

C语言是一门结构化的程序设计语言

生活中的结构无非就3种

  1. 顺序结构

  2. 选择结构

  3. 循环结构

现在着重学习后两种

什么是语句?

在C语言中,由;隔开的就是一个语句

int main()
{
  int a = 0;//这是一条语句
  ;//这也是语句——空语句
  return 0;
}

分支语句(选择结构)

if的语法结构:

if(表达式)
语句;

如果结果为真,则执行语句,如果为假,则什么都不执行。

在C语言中如何表示真假?

0表示假,非0表示真,如-1,不是零,表示为真。

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

如果结果为真,则执行语句1,如果为假,则执行语句2。

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

如果表达式1成立,执行语句1,表达式1不成立再判断表达式2,表达式2成立就执行语句2,不成立则执行语句3,只能执行这三种的其中一种。

else if可以写多个

int age = 10;
if(age<18)
  printf("未成年\n");

这是一个单支结构,只有一个分支

int age = 10;
if(age<18)
  printf("未成年\n");
else
  printf("成年\n");

if- else语句

int age = 10;
if(age<18)
  printf("未成年\n");
else if(18<=age && age<28)
  printf("青年\n");
else if(28<=age && age<50)
  printf("壮年\n");
else//上述任何一种情况都不成立也就是年龄>=50执行这一行
  printf("老年\n");

如果想写18-28属于青年的话,直接写else if(18<=age<28)是不行的,代码在执行的时候会先执行前半段18<=age,结果为假,这部分的结果变成0,然后接着执行0<28,结果为真,输出结果为青年,而设定的age为10,这显然是个错误的结果。

想同时满足两个条件应该用&&连接。

上述代码写成以下也是可以的,

int age = 10;
if(age<18)
  printf("未成年\n");
else //在age>=18的情况下,再细分
{
  if(18<=age && age<28)
    printf("青年\n");
  else if(28<=age && age<50)
    printf("壮年\n");
  else//上述任何一种情况都不成立也就是年龄>=50执行这一行
    printf("老年\n");
  }

注意

  • if语句控制多条语句要用大括号括起来
int age = 10;
if(age<18)
{
  printf("未成年\n");
  printf("不能打游戏\n");
}
  • 一对大括号{ }就是一个代码块

  • else会和距离最近未为匹配的if匹配

int main()
{
  int a = 0;
  int b = 2;
  if(a==1)
    if(b==2)
      printf("111\n"):
  else//虽然这里的缩进是和第一个if对齐的,但实际上是和第二个if成对。
    printf("222\n");
  return 0;//最终打印结果是空。
}

如何打印出222呢?加一个大括号即可:

int main()
{
  int a = 0;
  int b = 2;
  if(a==1)
    {
    if(b==2)
      printf("111\n"):
    }//这里就变成了一个代码块,条件成立,执行这个代码块,条件不成立,执行else。
  else
    printf("222\n");
  return 0;//最终打印结果是222。
}
  • 使用if的时候要注意代码的可读性
if(condition){
  return x;
}
return y;
if(condition)
{
  return x;
}
else
{
  return y;
}

这两段代码表达的意思完全一样:条件成立,返回x的值,条件不成立,返回y的值。但是第一段代码读起来的时候,要理解意思会困难许多。

  • 注意=与==的区别
int num = 4;
if(num = 5)//一个=是赋值,==才是判断相等
{
  printf("111\n");//这样写无论num是多少都会打印这一行。
}
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值