未初始化的变量故障C++
我不断收到错误消息,说明''rate'在此函数中未初始化“。未初始化的变量故障C++
任何人都可以看到为什么?我查看了我的代码,并将其正确地传递给我的其他函数,并且错误源于此函数。有任何想法吗?
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;
所以你的解决方案工作,但是当我尝试在下一个函数中将rate传递给另一个变量时,我收到了一个similair错误。 “可变”充电设置但未使用“你可以在这里看到第二个功能。我还应该提到,我尝试将第一个解决方案应用于这个变量并没有成功。 [链接](https://gist.github.com/anonymous/ed79f637d0daa0b35a295ddd6136bfdf) – gf807
也许你应该在代码中做些事情。我的意思是你计算它,但不要对计算值做任何事情。 – drescherjm
没有意识到我在该函数中为“费率”而不是“费用”做了一个cout声明。谢谢你,代码现在工作。 – gf807
如果sportType_array[index]
不是 'F',“G '或'h',函数将直接返回到返回值,返回rate
,该值未初始化。
如果这些数组中的值不正确,您希望返回什么值?最好设置为rate
,即使它不是假设发生。
如果sportType_array[index]
不'f'
,'g'
,或'h'
,没有if
块将被执行。您应该将这些更改为if/else if
,然后在没有匹配的情况下添加最终的else
子句。
但更可能的问题是userAge_array[index] == 25
。当它小于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 ='行? –
假设'sportsType_array [index] =='a'' – rwols
如果sportType_array [index]是f,g,h,比如说'z'以外的东西,那么比率是多少? –