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。

  • 相关阅读:
    bzoj 1013: [JSOI2008]球形空间产生器sphere
    bzoj 1012: [JSOI2008]最大数maxnumber
    bzoj 1010: [HNOI2008]玩具装箱toy
    bzoj 1008: [HNOI2008]越狱
    bzoj 1007: [HNOI2008]水平可见直线
    UVa12105 越大越好
    POJ
    最优点配对问题(紫书)
    Ned 的难题
    UVA
  • 原文地址:https://www.cnblogs.com/yuohoo/p/2096319.html
Copyright © 2011-2022 走看看