转换大小写和转换警告
Converting case and cast warnings
我正在尝试制作一个程序,根据输入内容将字符转换为小写或大写。我不想使用 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;
如果我忽略警告并测试我的程序,它 returns 一个从大写到小写的 '�',一个从小写到大写的空白字符。
我该如何解决这个问题?感谢您的帮助!
您需要实际调用 ConvertLowerToUpper
和 ConvertUpperToLower
。现在您正试图将指向这些函数的指针分配给 convertedChar
。
提示:当编译器抱怨 'something without a cast' 时,转换通常不是解决方案。
我正在尝试制作一个程序,根据输入内容将字符转换为小写或大写。我不想使用 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;
如果我忽略警告并测试我的程序,它 returns 一个从大写到小写的 '�',一个从小写到大写的空白字符。
我该如何解决这个问题?感谢您的帮助!
您需要实际调用 ConvertLowerToUpper
和 ConvertUpperToLower
。现在您正试图将指向这些函数的指针分配给 convertedChar
。
提示:当编译器抱怨 'something without a cast' 时,转换通常不是解决方案。