关于scanf的小问题
代码如下:#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的格式要求
把代码写好 这样写
scanf("%d%d" , & a , & b) ;
键盘输入的时候,两个数中间用空格分隔 本帖最后由 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
这大概是能够找到的最详尽的资料了 Q1:都输入20,15
%d,%d出现的是20
%d*%d出现的为什么是40
楼上的解释是对的,你这两个代码,第一个能正常读取到20和15,第二个可以读到a=20,不能获取到15,b的值一个随机数,你说这个40是什么意思?
页:
[1]