第 4 章 分支语句
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-16
<一>if语句 一个简单函数可以有多条语句,但这些语句总是从前到后顺序执行的.除了顺序执行之外,有时候我们需要判断条件,然后根据判断的结果执行相对应的后续代码,在C语言中可以用分支语句(Selection Statement)实现,如:if语句、if..else语句、switch语句,下面举例: if(x != 0) { printf("x is nonzero.\n"); } 这里if语句的条件,x!=0意思是如果x不等于0,这执行{}花括号里的语句,否则不执行{}语句,直接跳到}后面.其实,if(x)和if(x!=0)是等价的,x值等于0为假,x为非0的值为真.if和控制表达式改变了程序的控制流程(control Flow),不再是从前到后顺序执行,而是根据条件执行不同的语句,这种控制流程称为分支(Branch). 知识扩展,关系运算符和相等性运算符 运算符 含义 == 等于 != 不等于 > 大于 < 小于 >= 大于或等于 <= 小于或等于 注意一下几点: 1.这里的==表示数学中的相等关系,相当于数学中的=号,而数学中的等号(=)在C语言中是赋值运算符,两者的含义完全不同. 2.if里面表达式所表示的关系成立则值为真(True),否则为假(False),在C语言中分别用int型的1和0表示.如果为真,则值为1;同理,如果为假,则值为0.举个例子:如果if(x>0),如果x的值1,则为真,执行if花括号里面的语句.如果x=-1,则为假,跳到if花括号后面执行接下来的语句. 3.在数学中a<b<c表示b既大于a又小于c,但作为C语言表达式却不是这样.以上几种运算符都是左结合,什么是左结合呢?这些运算符有些不是同等级的优先符,同一优先级别共同存在的时候,都是从左往右执行的.这里说到关系运算符(Relational Operator)(>、<、>=、<=)属于第6优先级的双目运算符,而相等运算符(Equality Operator)(==和!=)属于第7优先级双目运算符,属于左结合.相等性运算符的优先级低于关系运算符 4.这些运算符的两个操作数应该是相同类型的,两边都是整型的,两边都是整型或者是浮点型可以做比较,但两个字符串不能做比较. 和if语句相关的语法规则如下: 语句 → if (控制表达式) 语句 语句 → { 语句列表 } 语句 → ; 在C语言中,任何允许出现语句的地方既可以是由分号结尾的语句,也可以是由{}括起来的若干条语句或声明组成的语句块(Statement Block).加分号表示一个语句的结束;如果是单分号表示一条空语句(Null Statement). 1、以下程序段编译能通过,执行也不出错,但是执行结果不正确(根据第 3 节 “程序的调试”的定义,这是一个语义错误),请分析一下哪里错了.还有,既然错了为什么编译能通过呢? int x = -1; if (x > 0) printf("x is positive.\n"); 分析一下分支语句:初学者有些认为,给x初始化,x定义为整型,分配存储空间,然后把-1常量值赋给x,接着if语句判断-1 > 0为假,然后执行printf语句输出x is positive换行.但实现上编译器不会这样子执行,if(x>0)判断为假,其实什么也没输出,if语句在没有花括号的情况下默认,把第一个分号的语句作为if语句为真后,执行的语句.如果在printf("x is positive.\n");后再加一行printf("x x x x\n");则输出的结果是:x x x x 其实上面的程序可以等价于: int x = -1; if (x > 0) { printf("x is positive.\n"); } 如果想要输出:x is positive 则可以这样写 int x = -1; if (x > 0) { ; } else { printf("x is positive.\n"); } <二>if/else语句 if语句还可以带一个else子句,如: if(x%2==0) printf("x is even.\n"); else printf("x is odd.\n"); 这里的%是取模(Modulo)运算符,x%2表示x除以2所得的余数(Remainder),C语言规定%运算符的两个操作数是整型的.但如果操作数中有负数,结果应该是正是负呢?C99规定,如果a和b是整型,b不等于0,则表达式(a/b)*b a%b的值总是等于a,这个公式可以用具体值代替,假设 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: Linux守护进程简介下一篇: Linux下Webmin安装
关于第 4 章 分支语句的所有评论