转换案例和投射警告

时间:2015-10-10 20:00:49

标签: c casting uppercase lowercase

我试图制作一个程序,将char转换为小写或大写,具体取决于输入的内容。我不想使用ctype.h的toupper()tolower()函数。

我的ConvertCase函数如下所示:

char ConvertCase(char input) {
    char convertedChar = 0;

    if (('a' <= input) && (input <= 'z')) {
        convertedChar = (char)ConvertLowerToUpper;
    }
    else if (('A' <= input) && (input <= 'Z')) {
        convertedChar = (char)ConvertUpperToLower;
    }
    else {
        return input;
    }

    return convertedChar;
}

我的两个实际转换器看起来像这样:

char ConvertLowerToUpper(char input) {
    return input - 32;
}

添加而不是从上到下的减法。

当我编译时,我收到两个警告,

cast from pointer to integer of different size [-Wpointer-to-int-cast] convertedChar = (char)ConvertLowerToUpper;

每个演员一个。而且我真的不明白这意味着什么。如果我省略演员阵容,我会

assignment makes integer from pointer without a cast [-Wint-conversion]
     convertedChar = ConvertUpperToLower;

如果我忽略了警告并测试了我的程序,它会返回一个&#39;�&#39;从大写到小写,从小写到大写的空白字符。

我该如何解决这个问题?我感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您需要实际拨打ConvertLowerToUpperConvertUpperToLower。现在,您正尝试将指向这些函数的指针分配给convertedChar

提示:当编译器抱怨“没有强制转换的东西”时,强制转换通常不是解决方案。