C++中使用函数参数无法将int转换为char的问题
问题分析:为什么自定义函数返回的char会被输出成整数?
核心问题出在函数的返回类型上:
你的ascii函数声明的返回类型是int,哪怕你用static_cast<char>(y)把输入的整数转成了char类型,在返回的时候,这个char值会被自动提升回int类型(因为函数要求返回int)。所以std::cout最终接收到的还是整数,自然会输出数字而不是对应的ASCII字符。
两种解决办法:
1. 修改函数返回类型为char
直接让函数返回char类型,这样cout会识别并输出对应的ASCII字符:
char ascii(int y) { return static_cast<char>(y); } int main() { // 测试可打印字符更直观,比如65对应'A' std::cout << ascii(65) << std::endl; return 0; }
2. 输出时强制转换类型
如果不想改动函数的返回类型,就在输出环节把函数返回值转成char:
int ascii(int y) { return static_cast<char>(y); } int main() { std::cout << static_cast<char>(ascii(65)) << std::endl; return 0; }
注意:ASCII码中0-31都是不可打印的控制字符(比如换行、制表符),测试时建议用65(A)、97(a)这类可打印字符,能直接看到效果。
内容的提问来源于stack exchange,提问作者peter evans
相关产品推荐
相关产品推荐

