【发布时间】:2011-08-13 13:03:59
【问题描述】:
下面这句话的确切含义是什么,
if (scanf("%lf", &x) != 1)
我尝试输入数字,条件为true,否则输入'a'之类的无数字字符时,条件为false。
你能告诉我更多关于scanf()和价值1的信息吗?
【问题讨论】:
下面这句话的确切含义是什么,
if (scanf("%lf", &x) != 1)
我尝试输入数字,条件为true,否则输入'a'之类的无数字字符时,条件为false。
你能告诉我更多关于scanf()和价值1的信息吗?
【问题讨论】:
我系统上scanf() 的文档说明:
这些函数返回成功匹配和分配的输入项的数量,该数量可能少于提供的数量,在早期匹配失败的情况下甚至为零。
因此,如果找到浮点数,则scanf() 的结果为1,否则为0。如果返回值不是(!=),则执行if 语句的主体一个。
【讨论】:
man scanf
返回值
这些函数返回成功匹配的输入项数 和分配,它可以比规定的要少,甚至为零 早期匹配失败的事件。
如果在任一之前到达输入的结尾,则返回值 EOF 发生第一次成功转换或匹配失败。 EOF 是 如果发生读取错误也返回,在这种情况下错误指示符 为流(参见 ferror(3))设置,并且设置了 errno 指示 错误。
【讨论】:
if (scanf("%lf", &x) != 1)
如果您输入数字 1 作为输入,则您的条件应为 FALSE;
“%lf”是将数值转换为浮点数的转换说明符
当您的输入是非数字(即“A”或“Z”或“{”等)时,您的编译器不知道如何将符号转换为实数。
scanf读取用户通过标准输入设备输入的数据,并将其存储在一个变量中,该变量的名称和数据类型由程序员确定
【讨论】: