首页
社区
课程
招聘
[求助]printf 问题
发表于: 2014-11-2 04:35 5297

[求助]printf 问题

2014-11-2 04:35
5297
附件看不清我就删除了。
贴代码吧

#include <IOSTREAM>
#include <WINDOWS.H>
using namespace std;

#define MAX_NAME 256
typedef struct _MYSTRUCT_
{
        ULONG64        i;
        ULONG32        j;
}MyStruct;

int main()
{
        ULONG iRet = 0;
        MyStruct ps = {0};

        ps.i = 1244;
        ps.j = 6666;
        printf("%d %d %d",ps.i, ps.j, ps.j);

        system("pause");
        return 0;
}

编译成32位程序后 为什么打印出来的却是 “1244 0 6666”

有人知道原因吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 190
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个问题很奇怪,从来没有遇到过~~
2014-11-2 04:42
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
截图看不清
2014-11-2 08:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你的pEprocess变量是什么类型?这用的是vc6吧,那么我猜测是INT64?
因为看起来像是越界的问题,你用%d打印一个64位的值,改成%I64d就ok了
2014-11-2 09:03
0
雪    币: 2143
活跃值: (720)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
我只看到了XP,VC6。好古董。
2014-11-2 09:09
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
重新编辑了一下
2014-11-2 10:45
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
输出有问题的是另一个变量
2014-11-2 10:46
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
64位占两个DWORD
栈的分部情况是
1244
0
6666
6666
所以他打印前3个%d 是1244,0,6666

64位要用%lld
2014-11-2 10:49
0
雪    币: 7068
活跃值: (3517)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
9
一点都不奇怪,64位整数,你给它赋值1244.高32位肯定是零.
你把它当32位整数打印,实际压栈的确实64位.所以第一个%d是低32位的i,第二个%d是高32位i,第三个%d才是j.
2014-11-2 10:56
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这么纠结????????
2014-11-2 11:04
0
雪    币: 102
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
正解。
用%d格式本来就错了,记得应该是%I64d或者是%lld
另外: 标题太那个了。。
2014-11-2 11:27
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
唉。 动不动就怀疑操作系统。 怀疑系统库。 真是够了啊。
2014-11-2 11:52
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢8楼,果然跟你说的一样!
2014-11-2 13:08
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不那样取标题,我怕没人看这个帖子
2014-11-2 13:30
0
雪    币: 4928
活跃值: (967)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
15
好吧,通过上面的评论我也学到了不少
2014-11-2 13:56
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
额,虚拟机里面装Win7+VS的话速度太慢了!
2014-11-2 16:15
0
游客
登录 | 注册 方可回帖
返回
//