函数调用期间类型转换期间的问题

problem during typecasting during function calling

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

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

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

我尝试将参数从 'int x' 更改为 'char x',然后在 cout 中将其类型转换为 'cout<<(int)x;'

char 转换为 int 会做它应该做的,将存储的值转换为整数。当你说 char ch='4'; 时,变量保存 '4' 的 ASCII 值,它不存储整数值 4。所以铸造它不会给你整数值 4.

要得到ch的整数值(从'4'得到4),我们可以用'0'减去整数值,这样我们就得到了实际的整数值,

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