printf与cout输出结果为什么不同?

问题遇到的现象和发生背景

** printf("%c",m); ** 与 **cout<

问题相关代码,请勿粘贴截图
//printf("%c",m)的完整代码
#include

using namespace std;

void convert(int n,int r)
{
    if(n==0) return ;
    int m=n%r;
    if(m<0) {
        m-=r;
        n+=r;
    }

    if(m>=10) m='A'+m-10;
    else  m+='0';

    convert(n/r,r);

    printf("%c",m);
    return ;
}
int main()
{
    int n,r;
    cin>>n>>r;
    cout<"=";
    convert(n,r);
    cout<<"(base"<")";
    return 0;
}


//cout<
#include

using namespace std;

void convert(int n,int r)
{
    if(n==0) return ;
    int m=n%r;
    if(m<0) {
        m-=r;
        n+=r;
    }

    if(m>=10) m='A'+m-10;
    else  m+='0';

    convert(n/r,r);

    cout<return ;
}
int main()
{
    int n,r;
    cin>>n>>r;
    cout<"=";
    convert(n,r);
    cout<<"(base"<")";
    return 0;
}

运行结果及报错内容
  ** printf("%c",m);的结果**

img

      **cout<;的结果**

img

cout能够自动根据变量的类型来输出相应的结果,而printf输出的时候我们需要指定输出类型,而且这个类型必须是变量的类型,要不然就容易出错

cout<<(char)m;


可以看下cpp参考手册中的 c++-printf()

printf 输出需要format,你int 也可以输出 %c 或者%f
cout 编译器按照变量的类型来