if语句的良好编程风格

if-else语句的基本表达式如下:

  if (表达式)//如果表达式结果为真,执行语句1,否则执行语句2
  {
      语句1;
  }
  else
  {
      语句2;
  }
表达式中存在多种变量类型,如果能在编程时注意到类型的风格,便能在阅读代码时很快的辨识出其类型。常见的存在于表达式中的变量类型有:bool、整形、指针、浮点。当它们在与零进行比较的时候,区别将会显现。
  • 其中bool、整形、指针不注重编程格式,很容易将他们混淆。
    布尔类型的语义规定:0为假,非0为真。
    假设 flag 为真:
if (flag)//良好代码风格
if (!flag)//良好代码风格
if (flag == 1)//不良代码风格
if (!flag == 0)//不良代码风格
  • 当整形变量与零值比较时直接将整形变量用“==”或“!=”与0比较。
int num = 10;
if (num == 0)
if (num != 0)
  • 指针变量与零值进行比较时,用“==”或“!=”与NULL比较。
    NULL用于指针和对象,仅仅代表空值,指向一个不被使用的地址,在大多数系统中,都将0作为不被使用的地址,所以就有了这样的定义。NULL的值在这样的情况下与0相同,但两者的意义相差甚远。
if (p ==NULL)//良好的代码风格,让人清楚p为指针变量
if (p != NULL)
if (p !=0)//让人误解其为整形变量
if (p)//让人误解其为布尔变量
  • 浮点变量与零值进行比较时,由于其精度限制,应避免浮点变量用“==”或“!=”与数字进行比较,而是转化成“(>= -EXP) && (<=EXP)”的形式,这里EXP为定义的某一精度。
#define EXP 0.0000001
float a = 0.0
if (a == 0.0)//错误写法
if ((a>=-EXP)&&(a<=EXP))//良好书写风格

这里有一个编程题,用以上的方法可以很好避免隐含的错误。

求一元二次方程的解

首先对求解的过程进行分析:
这里写图片描述

通过分析可以看出,求解的过程运用了分支语句,所以我们可以使用if-else语句很好的实现:

#define EXP 0.0000001
#include <stdio.h>
#include <math.h>
int main()
{
    float a = 0.0;
    float b = 0.0;
    float c = 0.0;
    float disc = 0.0;
    scanf("%f%f%f",&a,&b,&c);
    if ((a>=-EXP) && (a<=EXP))
    {
        printf("不是一元二次方程");
    }
    else
    {
        disc = b*b-4*a*c;
        if ((disc>=-EXP) && (disc<=EXP))
        {
            printf("有一个根\n");
            printf("%f\n",(-b/(2*a)));
        }
        else if(disc>0)
        {
            printf("有两个实根\n");
            printf("两个根分别为:%f %f\n"
            ,(-b+sqrt(disc))/(2*a)
            ,(-b-sqrt(disc))/(2*a));
        }
        else
        {
            printf("没有实根\n");
        }
    }
    return 0;
}      
  • 除了上面应该注意的几点外,当if后的判别式中出现这样的写法:
if (p == NULL)
if (num == 10)

应该尽量写成这样的格式:

if (NULL == P)
if (10 == num)

这是因为在编写的时候,很容易将“==”写成“=”,这样便会出现if (p = NULL)if (num = 10),这样的编写错误编译器仍然认为其合法,这样在编译过程中编译器并不会报错,待到程序运行结果出来后发现结果有误,这时再进行查错,将会十分繁琐。

良好的编程风格是万千程序员前辈在实践中总结出的,我们作为新手只有有意的习惯这种风格,才能在学习中少走弯路,为他人,为自己带来方便。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值