终于来到了下一章……
本节的内容会让你真正领略到编程的魅力
你有没有发现,前面我们的程序都是从main函数的第一行开始,一直到main函数的最后一行为止,语句是一条条顺着执行的。
这种程序的结构叫做顺序结构。
顺序结构中的语句顺序是在编程的时候就确定了的
但是光有顺序结构可不行,就像我们走路一样,如果前面是悬崖,你还不转弯的话,我只能说:“你牛!”。
程序中也是如此,有的时候我们在编程的时不能确定语句的执行顺序(实际上是大部分时候),我们需要根据实际情况来改变我们的程序运行方向
也就是让程序拐弯
在这种情况下,if就排上用场了
首先我们来看一段程序
#include <stdio.h> #include <stdlib.h> int main() { int input; printf("请输入一个数字\n"); scanf("%d", &input); printf("\n你输入的是:%d ", input); if (input > 0) { printf("他是一个正数"); } if (input <0) { printf("他是一个负数"); } if (input == 0) { printf("他是0"); } return 0; }
如果你跟着程序的提示做,输入了一个数字的话
程序将判断你输入的数字是正数,负数还是0
在编程时,我根本无法预知你的输入是正数还是什么其他的乱七八糟的值
但是我可以使用if语句来判断你的输入信息,并且根据实际情况做出相应的调整
if是一个关键字,它的后面还跟着一对括号
括号里面的内容叫做判断条件
注意,if的括号后面没有分号;
if ( xxx )
if的后面则是一对大括号
用大括号括起来的内容时代码块
大括号标明了if语句的作用范围
一个基本的if格式应该为
if( 表达式 )
{
代码
}
如果表达式的值为“真”,那么将执行if后面大括号中的语句
否则,程序将直接跳过大括号中的代码,执行后面的代码
于是乎,我们就需要知道什么是“真”什么是“假”了
“真”与“假”
因为计算机中使用的是二进制,因此就只存在两种状态(比如高电平和低电平)
真是一种状态,假就是另一种状态
现实生活中,我们所说的“真”是指与客观事实相符合,假则与其相反。
计算机中,人们则规定,0是假,所有非0的数都是真
切记,真是所有非0的数,因此不管是1也好,1024,甚至是-3.14159,他们都是“真”!
当if括号内的表达式的值为0时(就是假时),if后大括号内的代码将不会被执行
现在我们就可以尝试来理解开头处的例子程序了
程序的前10行,你应该能够理解(否则你应该考虑一下是否需要重新学习前面的内容)
第11行是一个if,小括号内的内容是input > 0
中间的>(大于号)和在数学中的含义相似,不过它用来判断大于号左边的值是否大于右边的值
如果这个判断成立,那么这个表达式将返回真(通常来说,这个值是1),否则将返回假(通常是0)
也就是说如果我们输入数字5 的话,5在大于号的左边,显然它是大于右边的0的
这个表达式的值便为“真”,于是乎,这一个if语句中的
printf("他是一个正数");
将被执行,这样你就能在屏幕上看到打印出来的“他是一个正数”
第十三行语句执行完后,将来到16行的第二个if
条件是input<0
input是5,参考上面的大于号
这个表达式的值显然是假,也就是说,第二个if的printf语句不会执行
程序会直接跳到下面的21行的第三个if
这次的表达式变成了input == 0
这一下就有人搞不清楚了【=我知道,可是==是毛线东西】
呃,这个==嘛,其实和数学中的=差不多啦
注意,是差不多,不是相同!
==就是判断左右两边是否相等,相等就返回真,不相等则返回假
显然,这个if也返回假
然后程序就到了return了,到此程序结束
这便是程序能够判断输入的数字是正数、负数还是0的原因
请试着分析输入为-1,以及为0的情况
关系运算符
最后我们来介绍一下关系运算符
顾名思义,这是他属于运算符的一类
什么是运算符呢,就是一种表示运算关系的符号,比如+-*/
而关系运算符,则是用来计算关系的
C语言一共提供了6个关系运算符
他们是:
运算符
|
名称
|
示例
|
功能
|
缩写
|
<
|
小于
|
a<b
|
a小于b时返回真;否则返回假
|
LT
|
<=
|
小于等于
|
a<=b
|
a小于等于b时返回真;否则返回假
|
LE
|
>
|
大于
|
a>b
|
a大于b时返回真;否则返回假
|
GT
|
>=
|
大于等于
|
a>=b
|
a大于等于b时返回真;否则返回假
|
GE
|
==
|
等于
|
a==b
|
a等于b时返回真;否则返回假
|
EQ
|
!=
|
不等于
|
a!=b
|
a不等于b时返回真;否则返回假
|
NE
|
关系运算符算出来的值是1(真)或者0(假)(但是一定要记住,所有非0的数都是真)
还有一点需要强调的是,很多人会把==和=搞混。
实际上这两个符号的区别是灰常大的
==是等于判断符,他判断左右两边是否相等
而=在c语言中则是赋值的意思,如果上面的程序中
我们将第三个if写成了if(input = 0)
那么会发生什么呢?
因为=是赋值的意思,所以执行到if时,会将0这个数字赋值给input这个变量,也就是说不管你输入的数字是多少
到这里都会变成0,接着,这个表达式将返回input的值,也就是刚刚赋值得到的0
0代表假,也就是说,这个if后面的语句不会被执行。无论你输入的数字是多少,这个if都不会成立
好了,对于if的简单介绍到此为止,现在你需要的是练习
请试着将上面的程序改写判断输入的数字是否等于0
并输出相应结果!