(个人理解,请多多指教)
逻辑表达式:
逻辑表达式是指用逻辑运算符连接的表达式,结果只有0或1,常见的逻辑运算符&&、||、!。中文是且、或、非。
比较运算符:
>、<、>=、<=、==。用来比较两个变量或者两个表达式的结果的大小,如果成立则返回真,否则返回假。要注意的是等于是两个等于号,一个等于号是赋值不是比较运算符。
选择控制语句
选择控制语句有两种,一种是最常用的if语句,一种是switch语句。
If语句:
在数学中有一种很常见的问题叫做分类讨论,意思是某个问题不止一种结果,在不同的条件下有不同的解决办法。在c语言中就需要用if语句将不同的条件给区分开来。
If语句的语法是
if(条件语句){
事件A;
}
用自然语言表示就是,如果小括号内的条件语句成立则执行大括号里的事件A,如果小括号里的条件不成立则跳过大括号的内容执行下面的代码。
除了单独的if语句还有if else语句,语法可表示为:
if(条件语句){
事件A;
}
else{
事件B;
}
用自然语言表示可以理解为如果小括号内的条件语句成立则执行事件A,如果条件语句不成立则执行事件B,else在这里起一个转折的作用。
最后一种是if else if语句,具体语法为:
if(条件A){
事件A;
}
else if(条件B){
事件B;
}
else if(条件C){
事件C;
}
else{
事件D;
}
用自然语言表示为,如果条件A成立则执行事件A,如果条件B成立则执行事件B,如果条件C成立则执行事件,如果否不成立执行事件D。这个用于对多种情况的分类讨论。
第一个if和第二个if else都是条件语句成立执行事件A,但也有区别,第一个不论条件成不成立都会执行下面的代码,第二个事件A和事件B只能执行一个,换句话说,当事件A和事件B的条件是相对的,就用if else,如果事件A和事件B的条件是包含关系,则用if来控制条件范围比较小的。比如如果今天是周三我就先看电视再写作业,如果不是我就只写作业,就可以表示为:
if(today== Wednesday){
watch tv;
}
Do homework;
如果今天是周三我就看电视,否则我就写作业。
If(today == Wednesday){
Watch tv;
}
else{
do homework;
}
这就是if 和if else的细节上的区别,else if就用于多种情况的分类讨论,最后一个else可以有也可以没有视情况而定。
If条件语句除了并列使用还可以嵌套使用,就是说在一个判断完一个if的条件语句后执行事件A时又要进行分类讨论,就要用到if的嵌套。如:
If(){
If(){
}
else{
}
}
所以的if语句,if后面都要接一个条件语句来控制是否进入if语句内,条件语句可以是比较表达式也可以是逻辑表达式也可以是两者的结合。比如a>b,b>c,ab||bc,都可以当作if的条件语句,甚至常用的数学表达式都可以,if语句会判断这个表达式的结果是否为0,如果是0则跳出,如果非0则进入if里。
switch语句:
除了if语句外还有switch语句,switch用于多种情况的分类讨论,比如一个变量可以取多个值。语法为:
switch(整型表达式)
{
case 常量表达式1:
……………………;
……………………;
case 常量表达式2:
……………………;
……………………;
case 常量表达式3:
……………………;
……………………;
default:
……………………;
}
Switch后面接一个整型表达式要求结果为整型,每个case后面接一个常量表达式,然后在冒号后面写语句,这个可以写多个语句而不用加大括号。具体运行过程是,依次从每个case进入,将常量表达式的值与整型表达式的值做比较,如果相等则执行case里的句子,如过不等则比较下一个case,如果都不等则执行default的句子,要注意的是常量表达式的值不能相同,default的位置可以不局限于末尾,可以插在中间,但是每个switch只能有一个switch。
switch(k)
{
case 1:
i++;
case 2:
i--;
case 3:
i = 0;
default:
i = 1;
}
这段就可以理解为当k 等于2执行i++,当k等于2时执行i–,当k等于3时执行i= 0,如果都不等则i = 1。
Switch与if的区别是,如果if语句的条件为真则执行里面的代码,执行完就跳出if语句,而switch在执行完case后则会继续比较下面的case,如果想跳出需要在每个case里加break语句。Switch的选择是一个一个确定的值,用来比较是否相等,而if的条件语句是一个表达式来判断0和非0。