栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于if的相关问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于if的相关问题

一*  if条件语句的用法:if语句起执行判断和分支的作用

if(条件表达式)//情况一
{
   执行语句1;//花括号内放多条语句,满足条件就执行所有的语句。没有花括号只执行一条语句。
   执行语句2;
}


if(条件表达式)//情况二
{
   执行语句1;
   执行语句2;
}
else//不满足条件表达式的其他条件
{
   执行语句1;//花括号内放多条语句,满足条件就执行所有的语句。没有花括号只执行一条语句。
   执行语句2;
}


if(条件表达式1)//情况三
{
   执行语句1;
   执行语句2;
}
else if(条件表达式2)//满足条件2
{
   执行语句1;//花括号内放多条语句,满足条件就执行所有的语句。没有花括号只执行一条语句。
   执行语句2;
}
else//不满足条件1,2表达式的其他条件
{
  执行语句1;
  执行语句2;
}


if()//情况四:嵌套
{
     if()
     {

     }
     else
     {

     }
}
else if()
{
}
else 
{
}






总结:

1. C中0表示假,非0表示真。

2. if语句执行,先执行完成表达式的值,得到逻辑结果,在进行判定

二*关于if条件表达式:

1.bool变量和0的比较:(ture和false)bool一般很少用

首先,C语言有没有bool类型? c99之前,主要是c90是没有的,目前大部分书,都是认为没有的。因为书,一般都要落后于行业。 但是c99引入了_Bool类型(你没有看错,_Bool就是一个类型,不过在新增头文件stdbool.h中,被重新用宏写成了 bool,为了保证C/C++兼容性)。

2.float 变量与"零值"进行比较:

a.浮点数在内存中存储,并不想我们想的,是完整存储的,在十进制转化成为二进制,是有可能有精度损失的。(注意:     这里的损失,不是一味的减少了,还有可能增多。浮点数本身存储的时候,在计算不尽的时候,会“四舍五入”或者其他策略)。

结论:因为精度损失问题,两个浮点数,绝对不能使用==进行相等比较.

那么两个浮点数该如何比较呢?

一》用自定义精度:

//写法一 
#include
#define Epsilon  0.00000001
int main()
{

  if(  x>(-Epsilon)  &&  x
#include//fabs()函数的包含文件
#define Epsilon  0.00000001
int main()
{

  if(  fabs(x) < (Epsilon)  )//绝对值
  {

  }

  return 0;
}

二》用系统精度:

//double最小精度:DBL_EPSILON
//float最小精度: FLT_EPSILON
//写法一
#include
#include//使用DBL_EPSILON要包含的头文件
int main()
{
   if(  x>(-DBL_EPSILON) && x
#include//fabs()函数要包含的头文件
#include//使用DBL_EPSILON要包含的头文件
int main()
{
   if(  fabs(x) < DBL_EPSILON ) 

   {

   }

return 0;
}

三*  if与else的匹配问题和一些注意事项:

1.if与else匹配:

#include
int main()
{
 if()
    if()
    执行语句;
 else 
 执行语句; //没有花括号,else和最近的if匹配
 
return 0;
}

无花括号时,就近原则匹配。良好的代码风格尽量把花括号用上。

#include
int main()
{
 if()
 {   
    if()
    {
      执行语句;
    }
 }
 else 
 {  
    执行语句; //一眼可以看出,有花括号时,else和第一个if匹配
 }

   return 0;
}

2.常见的注意事项:

a.if语句后面跟分号(;)

此时if()语句条件成立,相当于执行了空语句,所以紧跟if后面的语句不管条件成立与否都会执行,此时相当于if失去了分支能力。

b.条件表达式内的==和=混淆了

此时若是本来应该用关系操作符==,而用成了赋值操作符=,相当于本来的表达式的判断,变成了赋值,若是赋值为0,则为一直表示假(即条件不成立,不执行if紧接的{}内的语句,直接跳过);若是赋值为非0,则为一直表示真(即条件成立,执行if紧接的{}内的语句)。所以很可能造成了我们需要执行分支功能时,直接跳过;不需要执行时,却执行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号