zoukankan      html  css  js  c++  java
  • 使用没有初始化变量很危险

       1: /*-------------------------------------------------------
       2:  * @ 功能:指定12点行反显
       3:  * @ 参数:ctrl 0 清除/1点亮/2取反
       4:  *         x1 横坐标 0 - 239
       5:  *         y1 纵坐标 0 - 159
       6:  *         len 长度
       7:  * @ 返回:
       8:  * @ 时间:2013/04/12
       9:  */
      10: int LCDDataLineOption(u8 ctrl, u8 y1, u8 x1, u8 len)
      11: {
      12:     u8 x2, y2;
      13:     if(x1 > 240)
      14:         return 1;
      15:     if(y1 > 160)
      16:         return 2;
      17:     y1 *= 12;
      18:     x1 *= 12;
      19:     y2 = y1 + 12;
      20:     x2 = x1 + 12 * len;
      21:     LCDDataOption(ctrl, y1, x1, y2, x2);
      22:     return 0; 
      23: }

    在LCDDataLineOption模块中,第一次调试时错将第19行的y2 = y1 + 12 写成了:y2 = y2 + 12

    且在调试时参数y1都是0, 所以y2自然也就是12了, 但是写错代码时结果似乎也是对的,条件是y2初始值也是0,恰好这里没有初始化,理论没有初始化应该是一个随机数,但是下载到单片机里就不一样了,刚开始试时怎么都是对的,因为单片机RAM没有被覆盖,y2每次都是0,LCD正常用显示;

    随着程序跑的时间长了,y2在RAM没有被覆盖了,LCD每次反显时都多一行,因为没有初始化的y2不再是0,细查才发现这个问题:一个错误代码与不严谨的代码导致的问题。

  • 相关阅读:
    「2017 山东三轮集训 Day1」Flair
    Luogu P4321 随机漫游
    「WC2018」通道
    「CTSC2018」暴力写挂
    关于二项式相乘
    BZOJ #3625 CF #438E 小朋友和二叉树
    GIS可视化
    微信小程序Promise对象
    SQL Server-执行计划教会我如何创建索引
    IIS+NGINX 负载web服务器
  • 原文地址:https://www.cnblogs.com/worldsing/p/3145420.html
Copyright © 2011-2022 走看看