C ++某些变量“未在此函数中初始化".为什么? [英] C++ Some variables "used uninitialized in this function". Why?

查看:91
本文介绍了C ++某些变量“未在此函数中初始化".为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码:

#include <iostream>
using namespace std;

void input_function(int hour, int minutes);
void calcuation(int hour, int minutes, char meridien);
void output_function(int hour, int minutes, char meridien);

int main ()
{
  int hour, minutes;
  char answer, meridien;

  do
    {
      input_function(hour, minutes);
      calcuation(hour, minutes, meridien);
      output_function(hour, minutes, meridien);


      cout << "Would you like to try again? (Y/N)\n";
      cin >> answer;

    } while(answer == 'Y' || answer == 'y');

  cout <<"Goodbye\n";

  return 0;
}

void input_function(int hour, int minutes)
{
  cout << "Enter the hour in 24 hour notation: (Ex. 23)\n";
  cin >> hour;

  cout << "Enter the minutes:\n";
  cin >> minutes;
}

void calcuation(int hour, int minutes, char meridien)
{
  if (hour > 12)
    {
      hour = hour - 12;
      meridien = 'P';
    }
  else 
    {
      meridien = 'A';
    }
}

void output_function(int hour, int minutes, char meridien)
{
  cout << "Your time in 12 hour notation is:\n";
  cout << hour << ":" << minutes << endl;

  if (meridien == 'P')
    cout << "P.M.\n";

  else 
    cout << "A.M\n";
}

编译器给我以下错误:

Problem2.cpp:在"int main()"函数中:

Problem2.cpp: In function ‘int main()’:

Problem2.cpp:15:36:警告:此功能未初始化时使用了小时" [-Wuninitialized]input_function(小时,分钟);

Problem2.cpp:15:36: warning: ‘hour’ is used uninitialized in this function [-Wuninitialized] input_function(hour, minutes);

Problem2.cpp:15:36:警告:此功能未初始化时使用了分钟" [-未初始化]

Problem2.cpp:15:36: warning: ‘minutes’ is used uninitialized in this function [-Wuninitialized]

Problem2.cpp:16:41:警告:此功能可能未初始化使用了子午线" [-Wmaybe-uninitialized]计算(小时,分钟,子午线);

Problem2.cpp:16:41: warning: ‘meridien’ may be used uninitialized in this function [-Wmaybe-uninitialized] calcuation(hour, minutes, meridien);

我做错了什么?

推荐答案

您的input_function应该通过引用传递.
如果仅按值传递,则不会有任何影响.

Your input_function should pass by reference.
If you pass by value only, it would not affect anything.

  #include <iostream>
    using namespace std;

    void input_function(int& hour, int& minutes);
    void calcuation(int hour, int minutes, char meridien);
    void output_function(int hour, int minutes, char meridien);

    int main ()
    {
      int hour, minutes;
      char answer, meridien;

      do
        {
          input_function(hour, minutes);
          calcuation(hour, minutes, meridien);
          output_function(hour, minutes, meridien);


          cout << "Would you like to try again? (Y/N)\n";
          cin >> answer;

        } while(answer == 'Y' || answer == 'y');

      cout <<"Goodbye\n";

      return 0;
    }

    void input_function(int& hour, int& minutes)
    {
      cout << "Enter the hour in 24 hour notation: (Ex. 23)\n";
      cin >> hour;

      cout << "Enter the minutes:\n";
      cin >> minutes;
    }

    void calcuation(int hour, int minutes, char meridien)
    {
      if (hour > 12)
        {
          hour = hour - 12;
          meridien = 'P';
        }
      else 
        {
          meridien = 'A';
        }
    }

    void output_function(int hour, int minutes, char meridien)
    {
      cout << "Your time in 12 hour notation is:\n";
      cout << hour << ":" << minutes << endl;

      if (meridien == 'P')
        cout << "P.M.\n";

      else 
        cout << "A.M\n";
    }

这篇关于C ++某些变量“未在此函数中初始化".为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆