if语句
语法结构:
一:if(表达式)//表达式为真时执行语句
语句;
二:if(表达式)
语句1;
elseyi
语句2;
//多分支
三:if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
注意:C语言中不含有布尔类型,所以用非0表示真,0表示假
下面我们来看一段代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//判断结构,C语言中不含有布尔类型,所以用非0表示真,0表示假
int main(){
int coding = 0;//coding变量初始化为0
scanf("%d", &coding);//可以自定义输入变量
if (coding == 20000)//判断是否为真,真的话执行括号里面的语句,假的话跳出
{
printf("%s\n", "走上人生巅峰\n");
}
else if (coding == 10)//判断是否为真,真的话执行括号里面的语句,假的话跳出
{
printf("%s\n", "回家卖红薯\n");
}
else//如果上述都有错误,执行此括号里面的语句
{
printf("%s\n", "没救了\n");
}
return 0;
}
此段代码我们用了多分支语句,当输入的coding等于20000时,则打印输出“走上人生巅峰”,当输入的coding等于10时,则输出“回家卖红薯”,如果输入的coding都不等于上述数值时,则输出“没救了”。
输出结果为:
下面来看两段代码,这两段代码的对比主要是为了凸显代码的风格以及{}的使用
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//适当的使用{}可以使代码的逻辑更加清楚
//代码风格很重要
int main(){
int a = 1;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//适当的使用{}可以使代码的逻辑更加清楚
//代码风格很重要
int main(){
int a = 1;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
对比上述的两段代码可以看出两者的代码风格完全不同,一个注重对于{}的使用,一个没有,显然下面的代码风格更让人赏心悦目,适当的使用{}可以让代码的逻辑更加清楚。
如果上述代码不去使用{}会发生什么呢?下面我们来看一段代码:并思考此段代码的输出结果是多少?
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
int a = 1;
int b = 2;
if (a==1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
分析:
假如此时a等于0,但是执行if(a==1)时会判断为假,那么就执行不到if(b==2)语句,也就不会再有输出语句,则会直接执行return 0语句,程序结束。
现在根据图中的代码,此时a=1,那么当执行到if(a==1)时,判断为真,则此时执行if(b==2),又因为此时b=2,if判断为真,则执行printf("hehe\n");输出hehe.
假如此时b不等于2,则此时会输出haha,原因是else会找最近的if语句进行匹配,也就是if(b==2)语句,此时if条件语句判断为假,则会调换到else语句进行输出。
输出结果为:
下面来看最后一段代码:思考这段代码的输出结果:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
int a = 10;
if (5 < 10 < 30)//判断的顺序为首先5小于10,为真所以为1,下来1小于30,为真,所以此时执行printf("hello\n");
{
printf("hello\n");
}
else
{
printf("hello1\n");
}
return 0;
}
分析:在if判断条件中,判断的顺序为首先5小于10,为真所以为1,下来1小于30,为真,所以此时执行printf("hello\n");
输出结果为: