2016-05-13 51 views
1
#include<stdio.h> 
int main() 
{ 
    double a,b; 
    scanf("%lf",&a); 
    printf("%lf\n",a); 
    return 0; 
} 

我得到输出0.000000 - 为什么? - 但是相同的代码在C程序中输入和输出为double。使用float类型,代码以C++工作。我已经使用GNU gcc编译器。不要得到输入和输出值在C中的双重类型C

+0

'%lf'是用于'长双倍'不是吗? – immibis

+0

标记为[c],但标题为[C++]。 – sjsam

+1

当你运行程序时你输入了什么 – bruceg

回答

2

printf%lf并不存在。 它在scanf它。 (见specifiers x length表)

许多操作系统在printf中接受%lf是一致的,但Windows不是其中之一。

所以你必须scanf %lf,但printf %f,它应该无处不在。

+1

thanks.Now我的代码正常工作。 –

+0

your're welcome。 (为什么downvote?) – blld

+2

不是我的倒票,但是... C99和C11都对['printf()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html)说: _'l'(ell)指定以下'd','i','o','u','x'或'X'转换说明符适用于'long int'或'unsigned long int'论据; ...;或者对后面的'a','A','e','E','f','F','g'或'G'转换不起作用。但是,您注意到Windows运行时库不支持'%lf'作为'printf()'格式规范 - 这是完全合理的,因为它大多遵循C90而不是后来的标准。 –