标题:C语言改错问题(有关基本数据类型)
只看楼主
jioper
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2016-10-21
结帖率:70%
已结贴  问题点数:10 回复次数:3 
C语言改错问题(有关基本数据类型)
题目: 输入为:12a↙ b↙ 运行结果为:1,2,a,b,123.300000,65535 请改正程序中的错误,使它能得出正确的结果。
错误代码:
#include <stdio.h>

main()
{
    int b;
    unsigned short a = 65535;
    short k = a;
    char c, d;
    int f, g;

    b = (1234.0 - 1) / 10;
    scanf("%c", &c);
    scanf("%c", &d);
    scanf("%d", &f);
    scanf("%d", &g);
    printf("%c,%c,%c,%c,%f,%d", c, d , f, g, b, k);
}
正确代码
#include <stdio.h>
main()
{
double b;
int a = 65535;
char c, d;
int f, g;
b = (1234.0 - 1) / 10;
scanf("%c", &c);
scanf("%c", &d);
scanf("%c\t", &f);
scanf("%c", &g);
printf("%c,%c,%c,%c,%f,%d", c, d , f, g, b, a);
}
问题为什么把a从unsigned short改成int呢?是不是上面的unsigned short a和下面short k=a有冲突?
搜索更多相关主题的帖子: include double C语言 
2017-04-06 12:33
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:10 
回复 楼主 jioper
不是的,short代表短整型,范围为-32768_32767,也就是-2^15_2^15-1,你赋的值超出了范围,也就是常说的溢出;
关于各数据类型的具体情况可以查看相关书籍

............
2017-04-06 12:46
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
得分:0 
回复 楼主 jioper
还有小伙子啊,你的结帖率有点让人害怕啊,还是多结帖的好,要不然不会有人帮你解答的。。。

............
2017-04-06 12:47
jioper
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2016-10-21
得分:0 
回复 3楼 邹特强
我才发现这个问题,谢谢您提醒了
2017-04-07 14:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475829-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.118288 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved