提问者:小点点

警告:控件可能到达非空函数的末尾问题


我做了RGB到十六进制的转换。我的程序在联机编译器中运行得很好,但在代码战中有一个问题“控制可能到达非空函数的末端”。我该怎么办?是否应删除for循环?

using namespace std;
#include <iostream>
#include <string>

int checkForNumber(int input) {
    if (input > 255) return 255;
    if (input < 0) return 0;
    else return input;
}
string check(int input) {
    if (input < 10) return to_string(input);

    switch (input)
    {
    case 10:
        return "A";
        break;
    case 11:
        return "B";
        break;
    case 12:
        return "C";
        break;
    case 13:
        return "D";
        break;
    case 14:
        return "E";
        break;
    case 15:
        return "F";
        break;
    }
}
**string YES(int input) {
    string m;
    char temp;
     for (int i = 0; i < 2; i++) {
        m += check(input % 16);
        input /= 16;**
//problem is somewhere here
    }
    temp = m[0];
    m[0] = m[1];
    m[1] = temp;
    return m;
}
int main()
{
    string output;
    ios_base::sync_with_stdio(false);
    int r = 148 , g = 0, b = 211;
    r = checkForNumber(r);
    g = checkForNumber(g);
    b = checkForNumber(b);
    
   output += YES(r) + YES(g) + YES(b);
   cout << output;
    
}

共1个答案

匿名用户

问题出在check(int input)函数中--考虑一下如果input参数的值不在[10,15]范围内会发生什么。我建议在switch块的底部放入一个default:大小写,该大小写返回适当的内容。