lo_keyss 发表于 2007-5-26 20:08:08

[求助]输出问题


#include <stdio.h>
int main()
{
float f=5.75;
printf("f1=%f,f2=%d,f3=%f",f,f,f);
return 0;
}

输出:f1=5.750000,f2=0,f3=0.000000
问题:为啥f3=0.000000,而不是5.750000?难道"f2=%d"时把"f"赋值为0?

Zelsazgh 发表于 2007-5-26 20:49:50

%D是整型格式输出,无法实现.....

lo_keyss 发表于 2007-5-26 20:54:14

那是我有意写成%d的,我想了解下程序遇到这种情况时是如何处理
ls你指的无法实现,是指什么?

Zelsazgh 发表于 2007-5-26 20:57:04

格式化输出时要求格式对应,所以无法实现

lo_keyss 发表于 2007-5-26 20:58:38

但为什么能通过编译,并输出:f1=5.750000,f2=0,f3=0.000000

Zelsazgh 发表于 2007-5-26 21:00:45

这里是无法检查的

Zelsazgh 发表于 2007-5-26 22:09:43

修正一下,查找了一下关于printf()资料,在int printf(format, ...)中,格式化字符的内容以栈形式保存,在上述问题中,由于格式化输出时的%D指向,导致在使用栈时,指针调用第二参数时使用的是整形指针,导致错误的发生,检查机制使其返回为零,而接下来的因为上级的整形调用错误,促使指针的指向错误,全部都会有归零操作
页: [1]
查看完整版本: [求助]输出问题