2015-04-27 102 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位數的精度。然後,沒有換行符,所以他們必須要在其他行中發生其他事情。