zoukankan      html  css  js  c++  java
  • 不是所有的控件路径都返回值

    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。

  • 相关阅读:
    FTP上传/下载文件栗子
    WEB上传大文件解决方案
    SQL分页新语法
    CTE实现树形结构查询
    无索引状态下比较DataTable的几种过滤方法效率
    CodeSmith模板
    一. DotNet MVC4.0+EasyUI Web简单框架-前言
    关于Winform 2.0以后多线程不能更新UI的办法
    NHibernate Demo 和 效率测试
    构建Vue+Ionic+Cordova项目,开发全平台APP系列教程
  • 原文地址:https://www.cnblogs.com/yuohoo/p/2096319.html
Copyright © 2011-2022 走看看