C语言-交叉输入%c和%d

例子

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

给a赋值数字1.0

给b赋值字符%

给c赋值数字2.0

给d赋值字符¥

(字符型占一个字节)

输入:1.0空%空2.0空¥

a=1.0

b=空(空格被识别为字符)

c为数字型%f,不可能接收字符%,类型不匹配,函数结束执行。

输入:1.0%2.0空¥

a=1.0

b=%或b=%2.0

b为字符型%c,可以同时接收字符和数字,或理解为%2.0本身为一个字符。

无唯一结果,函数结束执行。

输入:1%空空2¥

a=1.0

b=%

两个空格只起一个间隔作用,把字符和数字隔开,免得%c同时接收字符和数字。

c=2.0

d=¥

输入结果正确。

总结

%d只能接收数字

%c可以接收字符和数字

%d%c可以输入数字+字符

(不能数字+空格+字符,因为空格会被识别为字符)

%c%d不能输入字符+数字

(必须字符+空格+数字,用空格分隔)

相关文章