2015-04-27 69 views
-4
printf("\n%12.6f%12.6f%12.6f", R[1], LS[1], LAMBDA); 

R是浮点数的数组,LS也是浮点数的数组,并且LAMBDA是一个浮点变量。在C什么呢这行做:

我试图将程序转换为Java,但我无法弄清楚这行代码试图做什么(我根本没有经历过C)。

+2

如果你在google上搜索,只需要'printf c manual',你需要2秒才能找到它。 –

回答

0

它只是将这些值以指定格式以浮点数格式打印到标准输出。 更多详细信息可在printf()找到。

1

printf()函数打印到stdout(通常是控制台),并在字符串中使用了特定的变量替换语法 - 因此您所看到的是格式字符串。它分解:

  • \n:换行符
  • %12.6f:下一个变量,
    • 宽度12 - 填充空格以使字符串是12个字符,如果它不是已经
    • 精密6 - 小数点后六位数
    • 十进制浮点格式
  • +2这个更多的迭代

数组查找语法与Java中的相同,所以它查找R和LS中的第二个(因为从零开始的索引)元素。

+0

我想我的问题的大部分将是...这是什么:“\ n%12.6f%12.6f%12.6f” – GlenGleGlen

+0

添加到我的评论,因为我需要花点时间来查找确切的规格。我还将包含的链接更新为更具描述性的页面 – David

0

这里是一个小的测试程序,它的输出:

#include <stdio.h> 
int main(int argc, char **argv) { 
    float R[2] = {1./7. * 10000, 2./7. * 10000}; 
    float LS[2] = {3./7. *10000, 4/7. * 10000}; 
    float LAMBDA = 5/7. *10000; 
    printf("BEFORE"); 
    printf("\n%12.6f%12.6f%12.6f", R[1], LS[1], LAMBDA); 
    printf("AFTER\n"); 
} 

前 2857.142822 5714.285645 7142.856934AFTER

所以,一个换行符,那么所有在一行中,每个数字占用12位,R [1],LS [1]和LAMBDA,打印到6位数的精度。然后,没有换行符,所以他们必须要在其他行中发生其他事情。