鱼C论坛

 找回密码
 立即注册
查看: 2174|回复: 4

关于scanf的小问题

[复制链接]
发表于 2022-9-9 11:36:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
代码如下:
#include <stdio.h>
int main()
{

int a,b,max;
printf("Input a,b:");
scanf("%d,%d",&a,&b);
if(a>b) max =a;
if(a<=b)max =b;
printf("max=%d\n",max);
return 0;

}
Q1:都输入20,15
%d,%d  出现的是20
%d*%d  出现的为什么是40
不太懂这个scanf的格式要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-9 11:48:23 | 显示全部楼层
把代码写好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-9 13:36:54 | 显示全部楼层
        这样写
scanf("%d%d" , & a , & b) ;
        键盘输入的时候,两个数中间用空格分隔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-9 13:51:03 | 显示全部楼层
本帖最后由 dolly_yos2 于 2022-9-9 13:59 编辑

这里当把两个 %d 之间的字符从 ',' 替换为 '*' 后输入字符串不变仍为 "20,15" ,则输入 a 后无法正确完成匹配( ',' 与 '*' 不对应), b 的值未被读入操作赋予,其值是不确定的,则最终得到的结果同样是不确定的,或者说是与其余外部因素相关的。

如果想比较彻底的了解 scanf 的格式要求可以把这一小节通读一遍
open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf#subsubsection.7.21.6.2
这大概是能够找到的最详尽的资料了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-9 16:00:40 | 显示全部楼层
Q1:都输入20,15
%d,%d  出现的是20
%d*%d  出现的为什么是40

楼上的解释是对的,你这两个代码,第一个能正常读取到20和15,第二个可以读到a=20,不能获取到15,b的值一个随机数,你说这个40是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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