CまたはC++でchar c[99] = {'Stack Overflow'};
と書いてみましょう。これはうまくコンパイルされますが、これは有効ですか?有効では、私は未定義または不特定の動作を呼び出さないことを意味しました。有効なCステートメントですか?
もう一度char c[99] = 'Stack Overflow';
と書いても、gccは多角形定数について不平を言いますが、上記の中括弧で囲んでいるとコンパイラは満足です!それはなぜそうですか?
最初の文の後のputs(c);
は、一般的な文字列の最後の文字を正確にStack Overflow
と出力します。なぜそうなのか?
誰かがこれらの動作を個別に説明できますか?
コンパイルして調べる。 – Falmarri
彼はすでに彼がそれをコンパイルしたと言いました... – indiv
@Falmarri:私はあなたがRTFQ賞に勝つと思います。彼は「それはうまくコンパイルされている」と言って、その出力についても説明しましたが、明らかにテストしました。しかし、テストでは、ポータブルであるか、標準によって明確に定義されているかはわかりません。 –