0

我正在学习 C 编程课程,但我的一项作业没有用我的教授编译器正确编译。

在我向她解释我的代码后,我的教授最终给了我满分,但要求我只使用 ansi C。因此我的问题。

这是我使用的代码。

    printf("The value of 2(%1$.1f)**3+3(%1$.1f)**2+4(%1$.1f) + 5 = %2$.1f\
     \n", y, x);

这是我使用 xcode 4.5 http://i.imgur.com/KtMuSJd.jpg的编译器设置

这是ansi C吗?或不?如果不是,我将如何将其更改为严格的 ansi C?

这里还有关于苹果 printf(3) 手册页中位置参数的一些信息。

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/printf.3.html

"

    Arguments are numbered starting at 1.
      If unaccessed arguments in the format string
     are interspersed with ones that are accessed the results will be indeterminate.

"

4

1 回答 1

2

不,这不是 ANSI C,甚至不是 C99。这是一个 POSIX 扩展。ANSI C 不提供任何方法来更改要打印的参数的顺序。在您的特定情况下,您需要多次传递参数:

printf("The value of 2(%.1f)**3+3(%.1f)**2+4(%.1f) + 5 = %.1f\n", y, y, y, x);
于 2013-02-23T23:39:34.340 回答