if语句的详解

if语句

1.1 if

C语言是结构化的程序设计语言,常见的结构有,分支结构,循环结构,选择结构,C语言是可以实现这三种常见的语言结构的,而日常生活中的事物,就可以理解为这三种结构的组合。

我们可以使用if,Switch实现分支结构,for,while,do while来实现选择结构

if语句的格式如下:

1.if(表达式)

2.        语句

若表达式为真,则执行程序,若表达式为假,则程序不执行。

0为假,非0表示真,若表达式结果为0,则为假,若表达式结果为非0,则为真。

例如:判断一个数字是否为奇数,

#include<stdio.h>
int main()
{
    int num;
    scanf("%d", &num);
    if (num % 2 == 0)
        printf("该数字不是奇数");
    else
    {
        printf("该数字是奇数");
    }
    return 0;
}

1.2 else

 if......else...的语法格式如下:

1.if(表达式)

2.        语句:

3.else

4.        语句

 例子:输入一个年龄,大于等于18显示成年,否则,显示未成年。

#include<stdio.h>
int main()
{
    int age;
    scanf("%d", &age);
    if (age >= 18)
        printf("已经成年");
    else
        printf("还没有成年");
    return 0;
}

1.3 分支中包含多条语句

首先,我们先看一段代码:

#include<stdio.h>
int main()
{
    int age;
    scanf("%d", &age);
    if (age >= 18)
        printf("成年了");
    printf("可以谈恋爱了");
    return 0;

结果发现,无论是否成年,都会打印出,可以谈恋爱了,这是因为无论是if还是else,默认只能控制一条语句,在上文中,if只能控制那个成年了,第二个就不能控制,那如果我们想要if语句和else语句可以控制多个语句,那该怎么办呢,加上一个{}即可。例如:

#include<stdio.h>
int main()
{
    int age;
    scanf("%d", &age);
    if (age >= 18)
    {
        printf("成年了\n");
        printf("可以谈恋爱了");
    }
    return 0;
}
 

这样就好了,其中else同理,也可以加入括号来进行控制。

#include<stdio.h>
int main()
{
    int age;
    scanf("%d", &age);
    if (age >= 18)
    {
        printf("成年了\n");
        printf("可以谈恋爱了\n");
    }
    else
    {
        printf("未成年\n");
        printf("不可以谈恋爱\n");
    }
    return 0;
 

1.4 嵌套if

在if else语句中,else可以和if形成嵌套,从而形成多重判断。

例子:判断一个数是0,负数还是整数

#include<stdio.h>
int main()
{
    int num;
    scanf("%d", &num);
    if (num == 0)
        printf("该数字是0");
    else
    {
        if (num > 0)
            printf("该数字为正数");
        else
            printf("该数字为负数");
    }

    return 0;
}

1.5 悬空else问题

如果有多个if和else,记住一条规则,else永远与最近的if相匹配

例如:

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
            printf("hehe\n");
    else
            printf("haha\n");

    return 0;
}

可能有很多初学者认为打印出来的值应该是haha,但结果为什么都不会打印,这就是悬空else问题,代码块中的else和第二个if相适应,而第一个if因为表达式错就没法进行下去,所以后续也就不会打印。

如果想要else和第一个if相适应,我们可以这样进行改变

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
    {
        if (b == 2)
            printf("hehe\n");
    }
    else
    {
        printf("haha\n");
    }
    return;

这样就好了!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值