在C中这行是做什么的:

时间:2015-04-27 22:39:51

标签: c

printf("\n%12.6f%12.6f%12.6f", R[1], LS[1], LAMBDA);

R是一个浮点数组,LS也是一个浮点数组,LAMBDA是一个浮点数变量。

我正在尝试将程序转换为Java,但我无法弄清楚这条线正在尝试做什么(我根本没有C经验)。

3 个答案:

答案 0 :(得分:1)

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

  • \n:newline
  • %12.6f:下一个变量,
    • 宽度12 - 填充空格以使字符串正好为12个字符(如果它尚未
    • precision 6 - 小数点后六位数
    • 以十进制浮点格式
  • 的+2次迭代

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

答案 1 :(得分:0)

它只是以指定格式的浮点数格式将这些值打印到stdout。 有关详细信息,请访问printf()

答案 2 :(得分: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位精度。然后,没有新行,所以他们必须在行后发生其他事情。