发布网友 发布时间:2022-05-10 23:18
共2个回答
热心网友 时间:2023-11-13 01:06
不一样的,这么都是格式字符,意义如下:格式字符 意 义 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" .热心网友 时间:2023-11-13 01:07
输入e导致scanf读取失败,此时x的值是未定义的。
由于scanf读入失败,未能成功读取的字符e被留在输入缓冲区中;下次循环时,scanf又尝试读取输入缓冲区中的e,自然再次读取失败,因而陷入无限循环。