發信人: ax.bbs@bbs.ee.nthu.edu.tw. (athena), 信區: test
標  題: 星星流講座 0012
發信站: ☆清華電機☆ (Wed May 10 20:11:28 1995)
轉信站: star

星星流講座 0012         C 語言教室

第 3 講 之 5            基本的輸出與輸入
                        Topic: Usage of printf (2)

再來看看 Size 這個欄位,它可以是以下三個字元的其中一個:

        字元    意義
        ------------------------------------------------------
        h       欲替換的變數是 short 或 unsigned short 的型態
        l       欲替換的變數是 long  或 unsigned long
        L       欲替換的變數是 long double 的型態
 

利用 Size 這個欄位和 Type 欄配合,就可以印出所有的基本資料型態了。

此外,若是機器上的浮點數發生了 IEEE 規格規定中 NaN (Not A Number)
或是 Infinity 的情形,那麼 printf 將直接印出 NaN 和 Infinity 的訊
息。

Precision 欄位通常是用以表示浮點數印出到小數點後幾位用的,但是它也
可以當成列印的最大欄寬 (Width 欄位是最小欄寬),這是什麼意思呢?
以下為範例程式:

/* printf2.c */
#include <stdio.h>
#include <string.h>

void main (void)
{
    char a[13];
    strcpy (a, "Hello, world");

    printf (":%s:\n", a);
    printf (":%10s:\n", a);
    printf (":%.10s:\n", a);
    printf (":%-10s:\n", a);
    printf (":%.15s:\n", a);
    printf (":%-15s:\n", a);
    printf (":%15.10s:\n", a);
    printf (":%-15.10s:\n", a);
}
 

執行結果:

:Hello, world:
:Hello, world:
:Hello, wor:
:Hello, world:
:Hello, world:
:Hello, world   :
:     Hello, wor:
:Hello, wor     :
 

printf 的解說到此告一段落,同時我們要給各位第一個自己動手做的機會,
請你寫一個程式,利用 printf 顯示所有我們曾經講過的基本資料型態,並
比較 printf 四種列印浮點數的型態 (e, E, g, G) 的不同。