C++ 某些变量"used uninitialized in this function"。为什么?
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 <<"Goodbyen";
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.Mn";
}
编译器给了我以下错误:
Problem2.cpp:在函数"int main()"中:
问题2.cpp:15:36:警告:"hour"在此函数中未初始化就使用了[-Wuninitialized]input_function(小时、分钟);
问题2.cpp:15:36:警告:"minutes"在此函数中未初始化使用[-Wuninitialized]
问题2.cpp:16:41:警告:"meridien"可能在未初始化的情况下在此函数中使用[-Wmaybe uninitialized]计算(小时、分钟、子午线);
我做错了什么?
您的input_function应该通过引用传递。
如果只传递值,则不会影响任何内容。
#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 <<"Goodbyen";
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.Mn";
}
您收到的关于未初始化变量的错误意味着程序试图在没有为变量赋值的情况下使用这些变量。维基百科对它们的定义如下:
在计算中,未初始化变量是指在使用前已声明但未设置为明确已知值的变量。它会有一些价值,但不是可预测的。因此,这是一个编程错误,也是软件中常见的错误来源。
若要修复这些错误,您可以尝试为变量提供初始值。实际使用的数字应该无关紧要,除非它对整数来说太大。
当你修复这个问题时,你的程序也很可能不会达到你的预期。这是因为目前您的函数正在接受参数,但实际上并没有更改int main()
函数中的变量。
有几种方法可以解决这个问题。你可以通过参考:
void input_function(int& hour, int& minutes)
{
//things happen, the & sign before the variables is the important part
}
这样做可以让函数与您实际想要使用的变量进行交互,这可能是解决此问题的最佳方法。
或者,如果这令人困惑,也可以尝试将它们声明为全局变量或使函数返回整数值。
祝你好运!
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- 调用专用模板时出错"no matching function for call to [...]"
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- Confusion: decltype vs std::function
- 为什么 std::function 可以作为 std::not2 的参数?
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- C++ "Invalid use of 'this' in non-member function" ,
- 从 std::ostream 重载 << 运算符时,为什么编译器会给出"too many parameters for this operator function"错误?
- 使用 std::function 作为成员函数,它捕获"this",并在析构函数之后从复制的 lam
- С 错误"s1, s2 are used uninitialised in this function"
- Lambda 捕获'this'另存为 std::function
- 在执行时收到错误"fopen': This function or variable may be unsafe."
- C++ substr 方法 - "invalid use of ‘this’ in non-member function"
- 编译器给出"function not declared in this scope"但声明了函数 (C++)
- C++ 某些变量"used uninitialized in this function"。为什么?
- C++ Lambda:访问 lambda 中的静态方法会导致错误'this was not captured for this lambda function'
- GCC - 删除"is used uninitialized in this function"警告
- "Function not declared in this scope" 编译 openCV 代码时出错