黑马程序员技术交流社区

标题: 求解?前辈! [打印本页]

作者: xuqiang@123    时间: 2015-9-1 17:17
标题: 求解?前辈!
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int a,b,c,max;
    a = b = c = max = 0;
   
    printf("请输入三个数,并以逗号分隔开:\n");
    scanf("%d,%d,%d",&a,&b,&c);
    max = a >= b? a : b;
    max = max >= c? max : c;
    printf("最大数是%d\n",max);
    return 0;

请输入三个数,并以逗号分隔开:
555555,77777777,88888888888
最大数是917737016
Program ended with exit code: 0


作者: Joker_999    时间: 2015-9-1 17:26
本帖最后由 Joker_999 于 2015-9-1 17:28 编辑

应该是数据溢出了,int类型的占4个字节,能表示的数的范围大概是 -2^31~(2^31 - 1)
这个范围大概是 -2147483648~2147483647,明显你最后88888888888是11位了,所以结果不对换成 long int试试

作者: xuqiang@123    时间: 2015-9-1 17:35
Joker_999 发表于 2015-9-1 17:26
应该是数据溢出了,int类型的占4个字节,能表示的数的范围大概是 -2^31~(2^31 - 1)
这个范围大概是 -214748 ...

谢谢!  我以为是有效数位错了,  居然把int数的范围搞忘记掉了!
作者: coding_wang    时间: 2015-9-1 19:34
测试的时候不要用那么大的数字就行了~~~~~
作者: xuqiang@123    时间: 2015-9-1 20:03
coding_wang 发表于 2015-9-1 19:34
测试的时候不要用那么大的数字就行了~~~~~

没想到啊!
作者: smilejoke    时间: 2015-9-1 21:24
xcode应该会提示你用long int
作者: 同舟ing    时间: 2015-9-1 21:27
这里好像int类型函数存不了这么多位吧,试着用长整形吧,。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2