我想知道实例中发生了什么,例如:
let result1 = try context.fetch(request)
for r in result1{
print(r)
}
也就是说,当scanf期望输入是一个整数,而是用户输入一个浮点值,一个double或其他任何东西.......然后将值赋给变量,或者是刚出现在后台?它的存在能否以某种方式对该程序以后的工作方式产生不利影响?
答案 0 :(得分:4)
但是用户输入浮点值,双精度或其他任何
用户始终输入字符串。这就是I / O的工作原理。
使用格式字符串,scanf()
尝试从输入字符串中提取第一个子字符串,该子字符串看起来像使用格式说明符的数据的文本表示,然后它恢复将在格式化时产生上述文本表示的数据使用printf()
使用相同的格式说明符。
在您的示例中,由于%d
,scanf()
从输入字符串中使用它在字符串开头找到的位数。它跳过前导空格,读取可选符号(如果存在),读取数字并在达到非数字字符时停止读取。它使用符号和读取数字重新创建数字,并将其放在它作为参数接收的地址。
如果格式字符串中没有更多的说明符,它使用字符串的其余部分来完成下一个格式说明符(如果有的话)或完全忽略它(但它不会使用它)。
答案 1 :(得分:3)
空白字符:该函数将读取并忽略在下一个非空白字符之前遇到的任何空格字符
在d
说明符下,提取的字符为:
任意数量的十进制数字(0-9),可选地以符号开头(+ 要么 -)。 d表示签名参数,u表示无符号。
因此,它从流中消耗所有前导空格字符和第一个数字(+/-符号和整数),并在有不匹配的字符时停止。
此外,
任何说明者都应使用至少一个字符。否则匹配失败,扫描结束。