回 帖 发 新 帖 刷新版面

主题:相同的参数cout与printf为什么打印了不同的东西啊?

用C写的源码及输出情况:
#include <stdio.h>
typedef  char* byte_pointer; 

//显示各个字节中存储的内容
void show_bytes(byte_pointer start,int len)
{
    int i;
    for (i=0;i<len;i++)
        printf("%.2x\n",start[i]);
}

//显示int型数据各个字节中的存储情况
void show_int(int x)
{
    show_bytes((byte_pointer) &x,sizeof(int));

}
void main()
{
    int a1=12345;
    show_int(a1);

}


输出:
39
30
00
00

c++的源码及输出:


#include <iostream.h>
typedef  char* byte_pointer; 

//显示各个字节中存储的内容
void show_bytes(byte_pointer start,int len)
{
    int i;
    for (i=0;i<len;i++)
        cout<<start[i]<<endl;
}

//显示int型数据各个字节中的存储情况
void show_int(int x)
{
    show_bytes((byte_pointer) &x,sizeof(int));

}
    
void main()
{
    int a1=12345;
    show_int(a1);

}
输出:
9
0


请问这是为什么啊?


回复列表 (共1个回复)

沙发



#include <stdio.h>
typedef  char* byte_pointer; 

//显示各个字节中存储的内容
void show_bytes(byte_pointer start,int len)
{
    int i;
    for (i=0;i<len;i++)
        printf("%d\n",start[i]);
}

//显示int型数据各个字节中的存储情况
void show_int(int x)
{
    char f[6]={0};
    itoa(x,f,10);
    show_bytes((byte_pointer) f,sizeof(int)+1);
    int y = sizeof(x);

}
void main()
{
    int a1=12345;
    show_int(a1);

}

我来回复

您尚未登录,请登录后再回复。点此登录或注册