为什么我不能在scanf中输入带小数点的数字?在C.

时间:2014-05-28 04:31:32

标签: c decimal-point

我正在编写一个简单的C程序,将距离分为特定范围,例如短长或中等 我知道C会取消小数点后的数字以存储为int。 所以这让我很困惑,为什么我不能在scanf期间输入7.5之类的数字?因为这会导致我犯错误。

为什么它不能直接读入我的scanf? 是因为击键“。”在声明一个int变量时根本无法接受? 它究竟是为什么?

1 个答案:

答案 0 :(得分:4)

我猜您的意思是7.5而不是7+.+5

这就是scanf函数的工作方式。指定%d时,表示"读取整数"的数字。指定%f时,表示"读取浮点值"。 scanf的文档提供了有关读取内容和停止内容的完整详细信息。

如果要读取带小数的值并忽略小数,则有很多选项:

  • 阅读double并在之后转换为int
  • 阅读int并检查以下.;如果找到一个
  • ,请阅读另一个int
  • 不要使用scanf;读取一个字符串并进行自己的解析

我个人不喜欢不使用scanf,它在读取整数或浮点值时有不可避免的UB。