C语言if语句详解

文章目录

文章目录

  • 文章目录
    • 1. if语句
      • 1.1 if
      • 1.2else
      • 1.3分支中的多条语句
      • 1.4嵌套if
      • 1.5悬空else问题

1. if语句



C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这种结构的,其实如果我们仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的的组合。

我们可以使用if、Switch实现分支结构,使用for、while、do while实现循环结构。

1.1 if

if语句的语法形式如下:

1.if (表达式)
2.   语句

表达式成立(为真),则语句执行,若表达式不成立(为假),则语句不执行。

在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。

例子:输入一个整数,判断是否为奇数

#include 
int main(){

	int num=0;
	scanf("%d",&num);
	if(num%2)
		printf("%d是奇数\n",num);
		return 0;
}

C语言if语句详解_第1张图片

1.2else

如果一个数不是奇数,那就是偶数了,如果任意一个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?
这个时候我们就要用上if…else…
它的语法形式如下:

if(表达式)
语句一:
else
语句二:

​ 举个例子,我们可以输入一个年龄 ,>=18岁就输出成年,否则就输出未成年。

#include 
int main()
{
    int age;
    scanf("%d",&age);
    if(age>=18){
        printf("成年");
    }
    else{
        printf("未成年");
    }
    return 0;
}

1.3分支中的多条语句

通常情况下,if和else默认只执行一条语句,具体运行案例如下图所示~C语言if语句详解_第2张图片

C语言if语句详解_第3张图片

通过这两幅图,我们可以知道无论age是否>=18,始终都会执行printf(“可以谈恋爱那句话”);

因为,对于printf(“可以谈恋爱了\n”); 是独立存在的,不管if语句的条件的真
假,都会被执行。如果我们想同时控制,如果我们想if语句同时控制两句话,那么我们可以加个{}来把两句话给括起来像这样,else也同样可以把它括起来,具体代码如下所示~

#include 
int main()
{
	int age = 0;
	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 
int main()
{
	int x = 0;
	scanf("%d", &x);
	if (x > 0) {
		printf("输入的数字是正数。\n");
	}
	else if /*这里的if相当于嵌套在else中,形成了嵌套结构。*/
        (x == 0)
    {
		printf("输入的数字为0。\n");
	}
	else {
		printf("输入的数字为负数。\n");
	}
	return 0;
}

ok~以上就是嵌套if语句的语法,有了嵌套语句,我们就可以完成更多复杂逻辑的判断。

1.5悬空else问题

如果有多个if和else,我们可以记住这样一条规则,else总是跟最接近的if匹配

我们可以看一下下面这个代码~

C语言if语句详解_第4张图片

我们可以思考一下这个程序最终运行结果是啥

事实上,很多初学者会认为a=0,不等于1,就会执行else那处的haha,但是当你真正运行代码的时候,它是什么都不输出的。

C语言if语句详解_第5张图片

为什么会出现else悬空的问题,如果有多个if和else的时候,记住一个规则:else总是跟离它最近的if匹配。

上面的代码排版,让else和第一个if语句对齐,让我们误以为else是跟第一个if匹配的,当if语句不成立的时候,自然想到的是执行else语句,打印haha但实际上else是跟第二个if进行匹配的,这样后面的if…else语句都是嵌套在第一个if语句上面,如果第一个if语句不执行,那么嵌套的if和else语句也执行不了,这样就啥都不打印了。

如果我们把代码写成这样子,会显得更加清晰易懂。

C语言if语句详解_第6张图片

或者如果我们需要else和第一个if匹配,可以把代码改成这种形式~

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

所以我们适当带上一些大括号,代码的逻辑就会更加清晰,所以我们写代码要注重括号的使用,这样有利于程序的可读性会更高。

好啦!今天的分享到这里就结束啦~如有讲的不好的地方,欢迎小伙伴们在评论区指出。

你可能感兴趣的:(C语言笔记,c语言,算法,开发语言)