←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3561

printfについて
投稿者---えこにゃん(2005/03/12 23:41:21)


printfについて調べていたところ
理解不可能な事が起こりましたので
質問させてください。
OS:Win2000、コンパイラ:bcc55
説明文はJISX3010からの引用です。

1.#の説明に
「x(又はX)変換の0でない結果に対しては、結果の前に
0x(又は0X)を前置する。」
とあったので値0を#つきで表記したらどうなるのだろうと思い
以下のプログラムを実行してみました。

#include<stdio.h>

int main(void)
{
    unsigned int x;
    
    x = 0;
    printf("%x %#x\n", x);    
    x = 1;
    printf("%x %#x\n", x);  
    x = 10;
    printf("%x %#x\n", x);  
    
    return 0;
}

実行結果
0 0x12ffb8
1 0x12ffb8
a 0x12ffb8

予想では
0 0(又は0x0)
1 0x1
a 0xa

2.次にo, u, x, Xの説明にあった
「値0を精度0で変換した結果の文字数は、0とする。」
の意味を確認しようと思い、
上のプログラムに一行追加し実行してみたところ

#include<stdio.h>

int main(void)
{
    unsigned int x;
    
    x = 0;
    printf("%x %#x\n", x);
    printf("%0u\n", x);      /*追加*/
    x = 1;
    printf("%x %#x\n", x);  
    x = 10;
    printf("%x %#x\n", x);  
    
    return 0;
}

実行結果
0 0x7ffdf000
0
1 0x7ffdf000
a 0x7ffdf000

予想では
0 0(又は0x0)
何も表示されない
1 0x1
a 0xa


実行結果と予想のずれもさることながら
1.と2.で%#x部分の表示結果が変化した理由もわかりません。
また2.で追加された行のすぐ上にx = 0;を追加してから実行すると

結果が
0 0x12ffb8
0
1 0x12ffb8
a 0x12ffb8
このように%#xの部分が1.の時と同じになります。

原因がわかれば教えてください。
よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:printfについて 3562 ぽこ 2005/03/13 00:16:26


No.3562

Re:printfについて
投稿者---ぽこ(2005/03/13 00:16:26)


printf("%x %#x\n", x);

printf("%x %#x\n", x,x);
に変えるとどうなりますか?


この投稿にコメントする

削除パスワード

No.3563

おはずかしい
投稿者---えこにゃん(2005/03/13 00:46:59)


>printf("%x %#x\n", x);
>を
>printf("%x %#x\n", x,x);
>に変えるとどうなりますか?

それでした・・・。
ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity