C语言 scanf()函数中使用%lf的问题

问题1 输入字母时,输出的x=0,为何x=0时可以跳出for循环?
问题2 第一次输入0后,程序要求重新输入,再输入一个字母时,为何会出现自动无限循环?

第1个回答  2019-05-21
不一样的,这么都是格式字符,意义如下:格式字符 意 义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f或%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串前面加个%,你自己对照下吧 长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。你这个“%lf”,是在定义输入的类型为double(双精度)是用的,不明白,你可以测试下: #include void main() { double i; scanf("%lf",&i); printf("%f\n",i); } 和 #include void main() { double i; scanf("%f",&i); printf("%f\n",i); } 我这里用了2个编译器分别测试了下,一个如果定义double行,输入的时候必须要用%lf,一个就不用了,用%f也行,但是精度还是有区别的,综合以上,如果定义double型数据,输入最好是用"%lf" .
相似回答