-4

このプログラムの出力を取得できません。このプログラムはどのように実行されるのでしょうか? 誰でもこれで私を助けることができますか?

#include<stdio.h>

int main(){
char c[]={'1','2','3',0,'1','2','3'};
printf(c); //gives 123 as output
char d[]={'1','0','3',0,'1','2','3'};
printf(d); //gives 103 as output
return 0;
}

これにより、0 より前に挿入したすべての文字が文字列として出力されます。printf
が 0 より前のすべての文字を出力する理由についても説明が必要ですか?

4

2 に答える 2

4

0真ん中の配列にaがあります。配列printfの最初まで出力さ0れます。charまた、単一引用符で複数の文字を使用することはできません。一重引用符は、文字列ではなく文字を定義します。最後に、char配列を. で終了する必要があります0

これを試して:

char c[]={'1','4','3','3','0','1','2','3',0};

0文字にするために途中で引用符があり、文字列を終了するために最後の周りに引用符がないことに注意してください0

于 2012-10-28T13:55:48.823 に答える
2

私の理解では、0 は (通常) に相当しNULL、printf は最初NULLに見つかったターミネータまで出力します。

あなたの場合

char c[]={'1','2','3',0,'1','2','3'};
printf(c);
char d[]={'1','0','3',0,'1','2','3'};
printf(d);

cprintfとdprintf が最初NULLに遭遇するまで印刷すると、どちらが0. ただし、配置'0'すると、ターミネータではなく文字 0 として認識されます。

于 2012-10-28T14:07:58.433 に答える