惧留孙网

juliusun.com

在线教程 > C语言教程 > 判断语句之if

判断语句之if

第 9/50 节 冥河C语言教程


通过判断语句,我们可以选择性执行某些代码。先介绍if语句,if语句经常和else搭配使用。用法如下:

if(条件) { 条件为真时执行的代码块 } else { 条件为假时执行的代码块 }

注意:if或else里面的语句块只有一条语句时,花括号可以省略。else语句块为空时,else及其后面的语句块可以省略

C语言中,用花括号括起来的部分连同花括号被称为语句块。严格的C语言规定,局部变量定义时必须在语句块开头,就是必须在花括号内的头部,在所有变量定义完之前,不允许执行其它语句。目前只有极少数编译器有此严格限制。

条件我们经常用到6个关系运算符,分别是<、<=、>、>=、==、!=,它们分别表示小于、小于等于、大于、大于等于、等于、不等于。

注意单等于运算符“=”是赋值运算符,是给变量赋值用的。双引号运算符“==”才是比较两个值是否相等的关系运算符,使用时不要混淆。

与判断相关的还有三个逻辑运算符,分别是&&、||、!,&&代表是逻辑并且,或逻辑与,两边的条件全部成立,才算成立。||是逻辑或运算符,两边条件只要有一方成立,就算成立。!是逻辑非,是一元运算符,条件为成立时,算作不成立,条件不成立时,算作成立。

先提示一下,字符型char数据也可以比较大小和进行算术运算,char类型数据存储的是char的编码,多数编译器用ASCII码。可以 点击此处查询ASCII表。在ASCII里,数字0到9十个字符编码是连续递增的,所以通过判断字符大于等于字符'0'和小于等于'9'可以判断出是不是0-9这十个数字字符。

C语言表达式最终结果均为数字,数字当作条件时,0为假,非0(如1、2、100等)均为真

下面举个例子,让用户输入一个字符,如果用户输入的是回车,程序输出警告。原样输出这个字符,再输出字符是否为数字字符,例:


  1. #include<stdio.h>
  2. int main( )
  3. {
  4. char c;
  5. printf("Input char:\n"); //输出提示信息
  6. c = getchar( ); //用户输入一个字符并赋值给c
  7. if(c == '\n') //判断用户输入的字符是否是回车
  8. printf("字符为回车,输出字符时将看不到实际字符,但请留心光标位置\n");//if或else语句块只有一条语句可以省略花括号{}
  9. //else及其语句块不需要时可以省略
  10. if( (c >= '0') && (c <='9') ) //判断c,if( c大于等于字符'0' 并且 c小于等于字符'9'),提示:数字字符的ASCII连续且递增
  11. {
  12. printf("是数字字符\n");  //只有一条语句,花括号{}保留省略均可
  13. }
  14. else
  15. {
  16. printf("不是数字字符\n");  //只有一条语句,花括号{}保留省略均可
  17. }
  18. getchar( ) ;getchar( ) ; //使程序暂停一下
  19. return 0;
  20. }

上述例子使用了再次if语句,运用了关系运算符、逻辑运算符、省略花括号、省略else及其语句块等多个知识点。请多留意注释内容。

对语法不熟练,且代码较少时,尽量不要复制代码,最好按着页面代码,自己手动输入代码,加深印象。

输入5回车后,运行效果类似如下图:

Hello World!

直接输入回车后,运行效果类似如下图:

Hello World!

if语句可以嵌套使用,如判断用户输入数字为正数、零、负数,例:


  1. #include<stdio.h>
  2. int main( )
  3. {
  4. int i;
  5. printf("请输入数字:\n"); //输出提示信息
  6. scanf("%d",&i); //用户输入并赋值给变量i
  7. if(i > 0) //大于0为正数
  8. {
  9. printf("是正数\n");
  10. }
  11. else
  12. {
  13. if(i == 0)
  14. printf("是零\n"); //只有一条语句,花括号{}保留省略均可
  15. else
  16. printf("是负数\n"); //在不大于0,且不等于0时,为负数
  17. }
  18. getchar( ) ;getchar( ) ; //使程序暂停一下
  19. return 0;
  20. }

上述代码注释比较详细,请注意分析上述代码,为防止初学者看不懂并列写法,给出下述代码例子,两份代码意义相同。


  1. #include<stdio.h>
  2. int main( )
  3. {
  4. int i;
  5. printf("请输入数字:\n");
  6. scanf("%d",&i);
  7. if(i > 0)
  8. {
  9. printf("是正数\n");
  10. }
  11. else if( i ) //由于数字非0为真,所以同:if( i != 0 )。为方便查看,你可以在此行的else和if(i == 0)中间加一个花括号{
  12. {
  13. printf("是负数\n");
  14. }
  15. else //这个else和第二个if是成对的,与前一个if-else语句是嵌套关系,虽然看起来像并列关系
  16. {
  17. printf("是零\n");
  18. }
  19. //如果你在第15行加上花括号{,请同样在此行加上花括号}
  20. //上述代码第一个else后面之所以可以省略花括号,是因为第二个if-else整体可以算做一条语句
  21. getchar( ) ;getchar( ) ;
  22. return 0;
  23. }

if-else语句最多能有两个分支,虽然上述写法像并列写法,但是第二个if-else语句是嵌套在第一个if-else语句中的else语句下的。

作者:冥河 QQ:3304576112
交流QQ群:554701039 C语言讲课群
本教程内容由本站保留版权,请勿复制传播
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的