質問: p2 = "Winter"; while ( *p1 ) { p1++; } while ( p1 > p2 ) { p1--; putchar( *p1 ); } putchar( '\n' ); return 0; } 上記のコードにおいて「while ( p1 > p2 )」は何を意味しているのでしょうか?
回答: アドレスの比較ですね。 最初のwhileループでp1をインクリメントさせてWinterの先頭アドレスからNULLの位置まで移動させています。 つまり最初のループが終わるとp1とp2の関係は以下のようになっています。 | W | i | n | t | e | r | \0 | | --- | --- | --- | --- | --- | --- | --- | | p2 | | | | | | p1 | 次のループでp1をp2に向かってデクリメントさせ、Winterを逆から出力させる処理になります。 つまりループの条件はp1がp2よりも大きい間、ということになります。