未初始化的变量麻烦C++
Uninitialized variable trouble C++
我不断收到“'rate' 未在此函数中初始化”的错误消息。
任何人都可以直接看出原因吗?我查看了我的代码,并在我的其他函数上正确地传递了它,错误源于这个函数。有什么想法吗?
double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else if (userAge_array[index] > 25) {
rate = 55.95;
}
}
if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else if (userAge_array[index] > 25) {
rate = 65.95;
}
}
if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else if (userAge_array[index] > 25) {
rate = 92.95;
}
}
return rate;
}
您将在函数末尾返回 rate
,但它可能永远不会初始化,因为所有赋值都在 ifs 语句中,可能根本不会被处理。
解法:
首先使用一些您将接受的默认值分配给它,以防没有一个 ifs 起作用:
double rate=0.0;
如果 sportType_array[index]
不是 'f'、'g' 或 'h',函数直接跳转到 return,它 returns rate
,未初始化。
如果这些数组中的值不正确,您希望 return 得到什么值?最好将 rate
设置为该值,即使 不应该 发生。
如果 sportType_array[index]
不是 'f'
、'g'
或 'h'
,if
块中的 none 将执行。您应该将它们更改为 if/else if
,然后在没有匹配项时添加最后的 else
子句。
但更有可能的是,问题是 userAge_array[index] == 25
。当 rate
小于 25
或大于 25
时设置 rate
,但永远不要设置 rate
当它正好等于 25
时。尝试使用 else
而不是 else if
,这样你就涵盖了所有情况。
double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else {
rate = 55.95;
}
}
else if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else {
rate = 65.95;
}
}
else if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else {
rate = 92.95;
}
}
else {
rate = 0.0;
}
return rate;
}
我不断收到“'rate' 未在此函数中初始化”的错误消息。
任何人都可以直接看出原因吗?我查看了我的代码,并在我的其他函数上正确地传递了它,错误源于这个函数。有什么想法吗?
double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else if (userAge_array[index] > 25) {
rate = 55.95;
}
}
if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else if (userAge_array[index] > 25) {
rate = 65.95;
}
}
if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else if (userAge_array[index] > 25) {
rate = 92.95;
}
}
return rate;
}
您将在函数末尾返回 rate
,但它可能永远不会初始化,因为所有赋值都在 ifs 语句中,可能根本不会被处理。
解法:
首先使用一些您将接受的默认值分配给它,以防没有一个 ifs 起作用:
double rate=0.0;
如果 sportType_array[index]
不是 'f'、'g' 或 'h',函数直接跳转到 return,它 returns rate
,未初始化。
如果这些数组中的值不正确,您希望 return 得到什么值?最好将 rate
设置为该值,即使 不应该 发生。
如果 sportType_array[index]
不是 'f'
、'g'
或 'h'
,if
块中的 none 将执行。您应该将它们更改为 if/else if
,然后在没有匹配项时添加最后的 else
子句。
但更有可能的是,问题是 userAge_array[index] == 25
。当 rate
小于 25
或大于 25
时设置 rate
,但永远不要设置 rate
当它正好等于 25
时。尝试使用 else
而不是 else if
,这样你就涵盖了所有情况。
double compute_rate(int userAge_array[], char sportType_array[], int index)
{
double rate;
if (sportType_array[index] == 'f') {
if (userAge_array[index] < 25) {
rate = 68.95;
}
else {
rate = 55.95;
}
}
else if (sportType_array[index] == 'g') {
if (userAge_array[index] < 25) {
rate = 73.95;
}
else {
rate = 65.95;
}
}
else if (sportType_array[index] == 'h') {
if (userAge_array[index] < 25) {
rate = 99.95;
}
else {
rate = 92.95;
}
}
else {
rate = 0.0;
}
return rate;
}