• 咫尺与天涯


    软件运行时展现出来的极严重的错误,在代码中,也许只是一个字符的错误!

    就像是vector,一开始的咫尺,到最后就是天涯!

    又像是蝴蝶挥动的翅膀,最终导致的飓风!

    程序员的职业素质,就是有架构师的视野,自顶至下的计划,精密的逻辑,同时还要有抽丝拨茧的技术。

    难缠的错误列表

    1、溢出错误

    在该实例中,移位操作针对int整数操作,导致数值溢出错误。

    int b = 0;
    int
    n = 0; ... n |= (b & 31) << k; vs
    int b = 0;
    long n = 0; ... n |= (b & 31L) << k;

    以上两段代码唯一的区别就是在31后面加了L表示长整型数。如果不用长整型数,在向左移位时就会导致移除错误。由于程序逻辑没有问题,只是执行结果是错的,调试起来极其麻烦。在程序设计中,使用移位操作时记得使用较大的类型避免溢出错误的发生。

    2、?:运算符使用

    在该实例里面,RealNumberValue记录了统计结果的值,结果使用三元运算符返回了错误的结果导致统计结果始终无法显示。

    public double RealNumberValue
    {
    get
        {
            if (this.qrMeasures == null || this.qrMeasures.Count == 0)
                return double.NaN;
            return this.qrMeasures[this.measureIndex].Values != null
                ? double.NaN
                : (double) this.qrMeasures[this.measureIndex].Values[this.rowIndex];
        }
    }

    在使用?:三元运算符是,一定要避免将返回结果写反的情况,否则将导致返回结果不对的情况。如果不是特别熟练,请使用if..else取代?:的使用。

    3、连续逻辑判断

    在下面的例子中,有两个使用||链接起来的判断,错误发生在连接符上,起初使用的&&。

    if (textureData == null || !texture.Update(textureData, true))
         flag = false;

    连续逻辑判断很容易混淆连接符后面的语句的执行条件,因此如果无法直观的确定后面逻辑的执行条件,请使用两个语句来表示连续逻辑判断,避免逻辑错误。

  • 相关阅读:
    python解决线性规划问题
    python解决多变量最优化问题
    python处理单变量优化
    java枚举类常用方法
    java实现十大排序算法
    python解方程
    python科学计算包
    python做微积分
    php定界符<<<EOF讲解
    一键安装LNMP/LAMP
  • 原文地址:https://www.cnblogs.com/dadream/p/4354202.html
Copyright © 2020-2023  润新知