double x=2.71828;printf("%d",x)高手来帮下

来源:百度知道 编辑:UC知道 时间:2024/06/27 04:28:48
main()
{
double x=2.71828;
printf("%d",x);
}

A. 2 B. 2.71828 C. 3 D. 以上输出结果不确定

答案是D,为什么呢??麻烦解释下,谢谢!!
为什么不是把2.71828强制转换成int型,选A呢??

因为他是输入十进制整数
存在输出内存差 所以结果不确定
就象%f格式输出当小数后面的位数 超过6位时第6位的数字取舍不固定一样

printf("%ld",x);
double是双精度,输出格式要用ld

在输入输出重就是按照指定格式读取缓冲区数据的,没有转换功能.

printf是按照第一个参数"%d"中的格式化符号决定读入内存字节数的。
%d就读入四个字节输出,而double占八个字节,所以结果不确定。