• 不是所有的控件路径都返回值


    1、简介:vc编译时报这个警告,虽然不是错误,可是这确实一个不折不扣的bug。

    2、产生原因:带返回值的函数在最后没有return x。

    3、后果:调用这个函数时得到的返回值不一定是正确的。

    4、实质:如果非void返回值的函数在结尾没有return,运行时程序如果需要在最后return,则将距离函数尾部最近的return作为该函数的结尾return。

    5、临床表现:程序运行时有时候是正确的,有时候又是错误的,当某种条件符合时(就是肯定运行到函数尾部),这种错误就一直出现。

    6、实例:

    (1)

    bool IsEven(int n)
    {
     if (n % 2 != 0)
      return false;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
     while (1)
     {
      char szInput[81];
      printf("please input a number, less equal than 0 to exit...\n");
      gets(szInput);
      int nInput = atoi(szInput);
      if (nInput == 0)
       break;
      bool bEven = IsEven(nInput);
      if (bEven)
       printf("%d is even...\n", nInput);
      else
       printf("%d is not even...\n", nInput);
     }

     return 0;
    }

    测试:不论输入什么数字,输出都是not even。

    (2)修改下IsEven函数:

    bool IsEven(int n)
    {
     if (n > 1000 && n <= 10000)
      return false;
     else if (n > 10000)
      return true;
    }

    测试:输入小于等于1000的数字,则输出都是is even

    7、测试结论:但返回值的函数如果在函数尾没有return语句,则在程序运行到函数尾部时,自动将离函数尾部最近的return语句作为该函数的结尾return。

  • 相关阅读:
    SQLite数据库如何存储和读取二进制数据
    JS常用代码
    获取内容第一张图片地址的函数
    我对App_Code的理解
    VS2008中Web项目的App_Code目录问题
    jQuery 浮动广告实现代码
    常用的倒计时脚本
    IE8 CSS hack
    精典的网吧常用批处理收集
    ASP.NET中App_Code,App_Data等文件夹的作用
  • 原文地址:https://www.cnblogs.com/yuohoo/p/2096319.html
Copyright © 2020-2023  润新知