整数的声明问题

tianyxy 2004-10-17 09:36:33
我声明了一个unsigned int seq;
程序运行一段时间以后我跟踪断点 发现seq=1110 1110 1110 1110 1110 1110 1110 1110
我改变声明 unsigned short seq= 0;
再跟踪 发现 seq= 1110 1110 1110 1110

这个seq是在一个结构体中struct{
unsigned int seq;
.....
.....
}f;

曾经做过这样的操作 memset(f, 0, sizeof(f));
还有其他一些复制 赋值 自加运算等 但是我感觉好像不是这些操作引起的
其各位帮忙分析一下 是什么原因造成的这个结果?
...全文
113 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pacman2000 2004-10-18
  • 打赏
  • 举报
回复
估计是memset以后,哪里操作内存的时候越界了,所以导致内容不对。
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
好多呀 明天我再贴吧 谢谢UPCC(杂食动物) ( )了!
Dong 2004-10-17
  • 打赏
  • 举报
回复
void *memset( void *dest, int c, size_t count );

看这个函数原形,void*是内存最原始的“类型”,指向的单位字节,memset的作用是把指定的起始字节后的count位初始化为指定的值c,

memset( &f, 0, sizeof(f) );把结构体大小的字节都付为0,f.se占前四位字节,因为字节都是一样的,所以为0000 0000 0000 0000!当然无论是unsigned int或是int的值都是0

建议你把所有的代码拿出来!这样的猜测不是好办法!
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
看来是没有人了 唉 失望中。。。。
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
看了 全是零呀
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
没有 看
whoho 2004-10-17
  • 打赏
  • 举报
回复
可能在别的地方出错了,上面的代码好像找不到什么原因
你在memset之后看过内存内容吗?
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
有没有高人指点一下呀?
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
哦 我刚才写错了 是 楼上写的那样memset( &f, 0, sizeof(f) );
清在帮忙分析分析还有没有其他可能的原因
因为数据很规律呀
qc_jrj 2004-10-17
  • 打赏
  • 举报
回复
memset( &f, 0, sizeof(f) );
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
我感觉好像是赋了一个类型不匹配的值给它了 可是我仔细找了好像没有呀
tianyxy 2004-10-17
  • 打赏
  • 举报
回复
楼上没有发现最后的数据很有规律吗?
边城狂人 2004-10-17
  • 打赏
  • 举报
回复
很难说啊,也不知道你对那个变量干了些什么。

64,674

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧