请教一个关于溢出的问题

snsn1984
博客专家认证
2008-10-24 08:57:15
#include <stdio.h>
void main()
{int a,b,c,max;
//printf("please input a,b,c:\n");
//scanf("%d,%d,%d",&a,&b,&c);
a=12;
b=23;
c=56;
max=a;
max>b?max:max=b;
max>c?max=max:max=c;

printf("The largest number is %d\n",max);
}

如果直接对a,b,c直接赋值,这样这个程序没有问题。但是如果按下边这样,就有问题了:
#include <stdio.h>
void main()
{int a,b,c,max;
printf("please input a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);

max=a;
max>b?max:max=b;
max>c?max=max:max=c;

printf("The largest number is %d\n",max);
}
这样对a,b,c进行输入的话,输出的总是第一个输入的数字,在 max>c?max=max:max=c;处设置断点,看到b=c=-858993460,max=第一个输入的数字。
请教.......
...全文
234 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
snsn1984 2008-10-25
  • 打赏
  • 举报
回复
楼上的,不好意思,刚结帖,所以没有分数给你了.对不起.
帅得不敢出门 2008-10-25
  • 打赏
  • 举报
回复
printf("%d,%d,%d", &a, &b, &c);
输入要与其格式相对应
snsn1984 2008-10-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 majintao0229 的回复:]
输入格式的问题,三个数应该用“,”相隔,按楼主可能是输入一个数后回车了,造成后面两个数没有赋值,或者三个数以空格间隔,读取的时候只能读取第一个空格前的数字赋值给第一个数
[/Quote]

我想问题可能就在这里,用空格分隔的时候,只读取了第一个数,后面两个数根本就没有读取.

谢谢大家.
chlaws 2008-10-24
  • 打赏
  • 举报
回复
很怀疑楼主的输入方法
根据代码格式就要按照3楼的格式进行输入,不是说输入1按回车输入2按回车输入3按回车 这是不匹配的
太乙 2008-10-24
  • 打赏
  • 举报
回复
jf~~问题都解决了?
majintao0229 2008-10-24
  • 打赏
  • 举报
回复
输入格式的问题,三个数应该用“,”相隔,按楼主可能是输入一个数后回车了,造成后面两个数没有赋值,或者三个数以空格间隔,读取的时候只能读取第一个空格前的数字赋值给第一个数
sockerly 2008-10-24
  • 打赏
  • 举报
回复
注意,C里面如果你写

printf("%d,%d,%d", &a, &b, &c);
//这样写在输入的时候要输入逗号,是一种对输入格式的限制
//但是写为
printf("%d%d%d", &a, &b, &c);
//就没有问题了
snsn1984 2008-10-24
  • 打赏
  • 举报
回复
我按大家说的用逗号分隔没有问题,但是如果用空格分隔就出现上述问题,有谁知道为什么吗?
hgcwhz 2008-10-24
  • 打赏
  • 举报
回复
程序没有问题,估计是楼主输入的问题吧。
snsn1984 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xhs_lh04 的回复:]
max>b?max:max=b; =>
max=(max>b)?max:b;

max>c?max=max:max=c; =>
max=(max>c)?max:c;
这样子代码可读性强一些
[/Quote]
谢谢
snsn1984 2008-10-24
  • 打赏
  • 举报
回复
谢谢对我的编程的风格的建议.
snsn1984 2008-10-24
  • 打赏
  • 举报
回复
我是按空格分隔输入的,而且重复了10次以上都是我描述的问题.谢谢大家.
pbdwadr 2008-10-24
  • 打赏
  • 举报
回复
,
liubuweiright 2008-10-24
  • 打赏
  • 举报
回复
顶一下,一分
hjk_thinking 2008-10-24
  • 打赏
  • 举报
回复
楼上的都说得很清楚了

scanf("%d,%d,%d",&a,&b,&c);

如果是这样的话 那麽输入的时候应该这样:(例如)
1,222,4
~~~~~~~~~~~~~~~~~~~~~~~~~~
scanf("%d%d%d",&a,&b,&c);
如果是这样 输入就可以不用输入逗号
11 2 3
这样;

~~~~~~~~~~~~~~
max>b?max:max=b;
max>c?max=max:max=c;
这样我没通过编译
最好是按楼上说的加括号
~~~~~~~~~~~~~~~
max>b?(max):(max=b);
max>c?(max):(max=c);


~~~~~~~~~~~~~~

镜机 2008-10-24
  • 打赏
  • 举报
回复
无问题,检查输入。
机智的呆呆 2008-10-24
  • 打赏
  • 举报
回复
程序没有问题 ,楼主输入的时候可能 没有输入“,” 或是输入了 全角的 ‘,’~~~~~~
ZangXT 2008-10-24
  • 打赏
  • 举报
回复
这个版果然很火,还以为能是沙发呢,唉
yangkunhenry 2008-10-24
  • 打赏
  • 举报
回复
没问题啊

#include <stdio.h>
void main()
{
int a,b,c,max;
printf("please input a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c); //你没输逗号!
max=a;
max>b?max:max=b;
max>c?max=max:max=c;
printf("The largest number is %d\n",max);
}
please input a,b,c:
12,23,56
The largest number is 56
Press any key to continue

ZangXT 2008-10-24
  • 打赏
  • 举报
回复
三个数是以“,”为分割输入的吧
加载更多回复(4)

65,186

社区成员

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

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