【问题标题】:problem during typecasting during function calling [duplicate]函数调用期间的类型转换问题[重复]
【发布时间】:2021-02-09 11:50:22
【问题描述】:

在程序中,我将字符数据类型转换为整数,但它显示的是字符的 ASCII 码,为什么?我应该怎么做才能打印 4 作为输出?

void fun(int x)
{
cout<<x;
}

int main()
{
char ch='4';
fun((int)ch);
return 0;
}

我尝试将参数从“int x”更改为“char x”,然后在 cout 中进行类型转换为“cout

【问题讨论】:

    标签: c++ function typecasting-operator


    【解决方案1】:

    char 转换为int 将执行应有的操作,将存储的值转换为整数。当你说char ch='4';时,变量保存'4'的ASCII值,它不存储整数值4。所以转换它不会给你整数值4

    为了得到ch的整数值(从'4'得到4),我们可以将整数值减去'0',得到实际的整数值,

    void fun(int x)
    {
        cout << x - '0';
    }
    

    【讨论】:

    • atoi 具有未定义的行为,因为 &amp;ch 不是以 null 结尾的字符串。正确的方法是ch - '0'
    • 不要使用48 - 它既不是标准的也不是可移植的。只有'0' 保证在任何地方永久有效。
    • @molbdnilo 注意!
    • 打印的数字总是一个整数,因为减法的结果是int,而不是char
    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多