关系运算符可以用于比较整数和浮点数,也允许比较混合类型的操作数。
if表达式两边的圆括号是必需的,它们是if语句的组成部分,而不是表达式的内容。
注意:每条内部语句仍然是以分号结尾的,但复合语句本身却不是。
注意:级联式if语句不是新的语句类型,它仅仅是普通的if语句,只是碰巧有另外一条if语句作为else子句(而且这条if语句又有另外一条if语句作为它自己的else字句,依次类推)。
if (y != 0)
if (x != 0)
result = x / y;
else
printf("Error:y is epual to 0\n");
上面的else子句究竟属于哪一个if语句呢?缩进格式暗示它属于最外层的if语句。然而C语言遵循的的规则是else子句应该属于离他最近的且还未和其它else匹配的if语句。所以正确的缩进格式应该如下图所示:
if (y != 0)
if (x != 0)
result = x / y;
else
printf("Error:y is epual to 0\n");
我们通常会在条件表达式的两端加上圆括号,这是非常有必要的,因为除了赋值运算符,条件运算符的优先级低于先前介绍过的所有运算符。
为了使程序更加便于理解,C89的程序员通常会使用TRUE和FALSW这样的名字定义宏。
#define TRUE 1
#define FALSE 0
同时还会定义一个可用作类型的宏:
#define BOOL int
布尔变量可以声明为:
_Bool flag;
_Bool是整数类型(更准确的说是无符号整型),所以_Bool变量实际上就是整型变量;但是和一般的整型不同,_Bool只能赋值为0或1。一般来说,往_Bool变量中存储非零值会导致变量赋值为1。
对于_Bool变量来说,算术运算是合法的(不过不建议这样做),它的值也可以进行打印(显示0或者1)。
除了_Bool类型的定义,C99还提供了一个新的头<stdbool.h>,这使得操作布尔值更加容易。该头提供的bool宏,用来代替_Bool。如果程序中包含了<stdbool.h>,可以这样写:
bool flag;
<stdbool.h>头还提供了true和false两个宏,分别代表了1和0。于是可以写
flag = false;
flag = true;
注意:switch语句往往可以比if语句执行更快,特别是在有许多情况要判定的时候。
switch语句的常用格式如下:
switch(表达式)
{
case 常量表达式:
语句;
···
case 常量表达式:
语句;
default:
语句;
}
下面逐一看一下它的组成部分.
答:把
if(i==0)
改写成
if(0==i)
因为不可能对0进行赋值操作,所以编译器将会产生一条错误信息。
许多编译器可以检测出if条件中=运算符的可疑使用。例如,GCC编译器会在选中-Wparentheses选项或-Wall(所有情况都警告)选项时执行这样的检查。GCC允许程序员通过在if条件外面增加一对圆括号的方式来抑制该警告:
if((i=j))
答:如问题中出现的那样,当int型和float型的值混合在一个条件表达式中时,表达式的类型为float型。如果i>0为真,那么变量i转化为float型后的值就是表达式的值。
答:C89标准指出,以下划线后跟一个大写的字母开头的名字是保留字,程序员不应该使用。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_57304511/article/details/123285265
内容来源于网络,如有侵权,请联系作者删除!