C ++某些变量“未在此函数中初始化".为什么? [英] C++ Some variables "used uninitialized in this function". Why?
问题描述
这是我的代码:
#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屋!