注册 登录
编程论坛 C++教室

请问一个关于16进制数的显示问题。先谢过

yangfrancis 发布于 2016-11-20 16:34, 2358 次点击
#include<iostream>
//using namespace std;
#include<iomanip.h>
int main()
{
    //unsigned _int64 x=0xE;
    //unsigned _int64 y=0x0;
    short y=0x0;short x=0xE;
    y|=x;
    std::cout<<hex<<y<<std::endl;      //网上查的说是cout语句这样用可以显示16进制数,为什么出现40107314
    //std::cout<<oct<<y<<std::endl;
    printf("print:%x\n",y);            //这条语句显示我期望的e
    return 0;
}

//请问为什么cout得不到我预想的结果?这条语句究竟该如何使用?
6 回复
#2
yangfrancis2016-11-20 16:37
对了,还有个问题,请问为什么当输出数据为_int64型时,会被提示<<符有二义性,而short不会出现这样的提示。
#3
yangfrancis2016-11-20 16:50
操作环境是VC6
#4
rjsp2016-11-21 08:55
没有VC6,但 <iostream>和<iomanip.h> 明显混搭了
程序代码:
#include <iostream>
#include <iomanip>

int main( void )
{
    short y=0x0;
    short x=0xE;
    y |= x;
    std::cout << std::hex << y << std::endl;

    return 0;
}

#5
yangfrancis2016-11-21 22:02
回复 4楼 rjsp
谢谢解答。但还是没弄好,iomanip.h改为iomanip之后又出现了'hex'未声明的提示。
#6
rjsp2016-11-22 00:04
以下是引用yangfrancis在2016-11-21 22:02:44的发言:

谢谢解答。但还是没弄好,iomanip.h改为iomanip之后又出现了'hex'未声明的提示。

试过我代码中的 std::hex 吗?我没有vc6试不了
#7
yangfrancis2016-11-22 09:13
是了。之前忘了在hex前加std::,现在可以正常输出了。谢谢。
1