幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2693|回复: 7

[通用编程] 结构问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-5-6 22:50:44 | 显示全部楼层 |阅读模式
#include"stdlib.h"
#include"stdio.h"
struct stud_type
{
    char name[20];
    long num;
    int age;
    char sex;
    float score;
};
main()
{
    void list(struct stud_type *pt);
    struct stud_type student[3],*p;
    int i;
    char numstr[20];
    for(i=0,p=student;p<student+3;p++,i++)
  {
      printf("\nenter all data of student[%d]:\n",i);
      gets(p->name);
      gets(numstr);p->num=atol(numstr);
      gets(numstr);p->age=atoi(numstr);
      p->sex=getchar();getchar();
      gets(numstr);p->score=atof(numstr);
  }
     printf("\nname\t num age  sex  score\n");
     for(p=student;p<student+3;p++)
     list(p);
}
void list(struct stud_type *pt)
{
    printf("%-7s %6d %6d %3c %f\n",pt->name,pt->num,pt->age,pt->sex,pt->score);
}

我想问的是为什么,上面的打印性别,跟分数那里都不能正常显示呢?问题出在哪里? [s:7]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-5-6 23:08:20 | 显示全部楼层
怎么不正常了??
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-5-6 23:23:23 | 显示全部楼层
性别那里不是显示 M 这些,是一个符号,然后分数那里,显示很长一段数字,但不是我所输入的数   [s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-5-6 23:30:54 | 显示全部楼层
测试下很正常....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-5-6 23:37:39 | 显示全部楼层
我的是这样显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-7 07:51:58 | 显示全部楼层
哈哈,终于被我发现了,这位帅哥在输入时,少输了年龄,程式上没有进行检查,所以出现楼主所说的情况....
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-5-21 01:15:55 | 显示全部楼层
今天再试过这个程序,输入年龄了,还是一个样,是错误显示的,NUM这里改小了就可以显示,最奇怪的是我在VC++里运行就可以正常显示,到底为什么TC上运行是错误的呢?情况还是和我发的图差不多。 [s:6]  [s:6]  [s:6]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-5-21 17:16:56 | 显示全部楼层
TC是基于16Bit平台的,VC(似乎是从3.0?)开始就是基于32Bit平台的.
所以VC中的int类型和long类型一样,都是占四个字节(32位),数值范围是–2,147,483,648 到2,147,483,647
但是,在16位的TC下,int类型是两位的,数值范围是-32768--32767 .
当int类型数据大于32767的时候,即溢出为负数,这时又将一个int赋值给L(L为long),有一个隐式类型提升,负数为在高位补1,依然为负数,所以最后应该会输出一个负数的错误值.
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-28 05:12 , Processed in 0.024772 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表