礼品网站模板,做flash网站遇到函数,进入公众号显示网络异常,四川省城乡建设部网站首页文章目录 **逻辑运算符(、||、!)**逻辑运算符特点短路短路-逻辑与短路-逻辑或 **关系运算符#xff08;relational expression#xff09;**运算操作符的结合律、运算符 **选择结构/分支结构****if 语句****复合句的if语句(if...else..语句)****不良风格的程序** *… 文章目录 **逻辑运算符(、||、!)**逻辑运算符特点短路短路-逻辑与短路-逻辑或 **关系运算符relational expression**运算操作符的结合律、运算符 **选择结构/分支结构****if 语句****复合句的if语句(if...else..语句)****不良风格的程序** **悬空else问题****嵌套的if语句****switch 语句**关于switch语句中的default 知识铺垫: C语言是结构化的程序设计语言
结构体化程序设计structured programming:是进行模块功能和处理过程设计为主的详细设计的基本原则。是过程式程序设计的一个子集对输入程序进行逻辑结构(下面三种结构)使得程序理解和修改更有效更容易。
任何程序由三种基本结构组合形成:顺序结构、选择结构、循环结构
顺序结构:按照代码的书写顺序从前到后执行选择结构:通过给定个判断条件当条件为真或假时执行对应程序–使用if、switch实现选择(分支)结构循环结构:允许一段代码重复执行直到满足某个特定条件循环语句有效地编写代码避免复杂度–使用for、while、do while实现循环结构 正文
三者结构控制程序流程:遵循顺序结构为基本主线遇到条件表达式程序可能因其他结构干扰主线改变了程序流程的方向对此为了更有效的控制程序的流程在条件表达式中添加逻辑表达式和关系运算符
逻辑运算符(、||、!)
逻辑表达式由变量、常量、逻辑关系运算符组成用于表示变量的逻辑关系。逻辑表达式只有两种结果真和假提供逻辑判断功能条件为真(1)为假(0)。 注:C语言中非0为真0为假
主要有三个运算符:
逻辑与(AND)–:并且的意思(两侧表达式同时为真整个表达式才为真若存在一侧为假整个表达式为假)逻辑或(OR)------||: 或者的意思(两侧表达式只需要一侧为真整个表达式为真当两侧表达式为假整个表达式才为假)逻辑非(NOT)-----! : 取反改变单个表达式的真假
逻辑运算符特点
先对左边的表达式求值再对右边表达式求值就会可能导致短路。
短路
短路指只凭左边操作数的结果就知道整个表达式的结果不需要执行右操作符进行判断主要体现于逻辑与、逻辑或中的短路
短路-逻辑与
if(month 3 month 5)判断是否是春季
对此,如果month3为假根据逻辑与性质不需要再判断执行month5真假根据左操作数结果可以判断整个条件表达式为假
短路-逻辑或
if(month 2 || month 3 || month 4)判断是是否是春季
对此如果month2为假根据逻辑或性质继续判断执行month 3是否为真如果month 3为真则不需要再判断month 4真假根据左操作数结果可以判断整个条件表达式为假
C语言逻辑运算符还有一个特点,它总是先对左边操作数开始判断
关系运算符relational expression
通过关系运算符表示变量与变量、常量之间大小的关系关系运算符一共有六种 大于运算符 小于运算符 大于等于运算符 小于等于运算符 相等运算符! 不相等运算符
通常用于if或者while结构当中判断大小会返回真(1)或假(0)。
这方面是最容易出现问题需要掌握正确的使用格式并且了解表达式运算操作的处理顺序有以下提醒
是相等运算符是赋值运算符。(对此if(3 x)和if(x 3)写法效果相同左边的写法是提醒程序员正确使用相等运算符)多个关系运算符不宜连用:不要把程序中复合表达式与数学表达式混为一谈(ikp属于数学表达式不等于程序表达式)
结果:这里连续使用小于运算符这里系统不会报错但是可能不能达到预期的效果关系运算符是从左到右计算并且会返回1或0表示真假
解释:ikp --ikp这个式子中ik进行判断真假返回1或0。这样子就导致了是0或1与变量p进行对比。应该是程序表达式:ik kp才达到预期的效果
运算操作符的结合律、运算符
表达式运算操作的处理顺序是由运算符的结合律、运算符共同决定 问题:当代码行的运算符比较多时没能正确处理关系导致执行错误
解决:熟记上面知识是比较困难因括号优先级是最高的用括号确定表达式的操作顺序可以防止产生歧义并提高可读性如if ((a | b) (a c))
选择结构/分支结构
if 语句
语法如下:
if(条件表达式)语句块当条件表达式为真就执行语句块当条件表达式为假则跳过语句块(条件表达式被执行了)复合句的if语句(if…else…语句)
语法如下:
if(条件表达式)
语句块1
else
语句块2只执行if、else中一个语句块当条件表达式为真执行语句块1.当条件表达式为假执行语句块
注:默认在if和else语句中默认都只控制一条语句
不良风格的程序
int main()
{
int age18;if(age18)
printf(未成年\n)printf(还是小孩子\n);
}
根据上面的规定显示器上只会打印一条语句未成年解决办法:使用括号括起来表示个语句块
if(age18)
{
printf(未成年\n)
printf(还是小孩子\n);
}悬空else问题
规则:如果有多个if和elseelse总是跟最接近的if匹配
int main()
{int a 0;int b 2;if(a 1)if(b 2)printf(hehe\n);elseprintf(haha\n);return 0;
}结果:可能想着不是hehe就是haha但是结果是啥都不打印 解释:else跟第二个if最接近形成if else语句if else语句在第一个if语句中那么第一个if语句不满足嵌套的if else就没有机会执行 可用通过括号自己调整下
嵌套的if语句
代码是灵活的,if语句嵌套if语句else里面嵌套if语句都是可以
语法:
if(条件表达式1)
{if(条件表达式2)语句块1else{if(条件表达式3)语句块2else语句块3//这里还能继续嵌套if语句}
}else语句块4在多条件情况下这样会导致程序可读性下降那么if else语句中else可以跟另一个if语句连用构成多重判断
int main()
{int num 0;scanf(%d, num);if(num 0)printf(输⼊的数字是0\n);else if(num 0) //这⾥的if 相当于嵌套在els语句中形成了嵌套结构printf(输⼊的数字是正数\n);elseprintf(输⼊的数字是负数\n);return 0;
}这里的else if就相当于else语句块里面有个if语句当然else if可以多次使用具体问题具体分析
switch 语句
在实现分支语句时除了使用if语句实现的还可以通过switch语句实现语句
其实switch语句是一种特殊形式的if…else结构用于判断条件有个有多个结果的情况。switch是多分支选择语句而if语句只有两个分支可供选择。输入if语句可以来实现多分支选择这样会导致程序冗长难读这个就是switch语句存在的理由
语法:
switch(expression){case value1statementcase value2statementdefault statement}根据expression不同的数值对应不同的case分支。如果没有与case对应数值则执行default分支(跟else一样)
注意点:
expression必须为整型类型case后面的值必须是整形常量表达式case和后面数字之间必须由空格无论是case还是default在使用过程中需要:符号表示后面内容
关于switch语句中的default
当使用switch语句时可能出现这种情况switch中的expression无法匹配case语句这个时候有两种做法一、不做任何处理 二、在添加default子句。但是程序不需要default建议保留语句default: break;目的是为防止别人误会你忘记经行default的处理
在 switch 语句中 case 语句和 default 语句是没有顺序要求的只要你的顺序是满足实际需求的就可以通常是将default最后处理的
分析代码:
int main()
{
int input0;scanf(%d,input);//这里input给数字7switch(input%3){case 0:printf(整除余数是零);case 1printf(余数是1\n); case 2:printf(余数是2\n); }return 0;
}结果:
解释:switch语句具有分支效果当执行某一条case语句中如果后面没有break语句代码将继续执行下去可能执行其他case语句中直到遇到break语句跳出或者switch语句结束。
所以在switch语句中使用break语句才能达成真正的分支同时case语句后面不是一定要跟着break语句需要根据实际需要来决定
感谢你的观看这里是店小二的学习笔记