次のプログラムを検討してください。
#include <stdio.h>
int main(void)
{
char side_a[] = "Side A";
char dont[] = {'W', 'O', 'W', '!' };
char side_b[] = "Side B";
puts(dont); /* dont is not a string */
return 0;
}
null 文字に遭遇すると puts() 関数が停止することを知っています。しかし、上記のプログラムでは null 文字を指定していません。それで、いつ印刷を停止しますか?このプログラムは未定義の動作を呼び出しますか? さまざまな C コンパイラでこのプログラムの同じ出力が得られることが保証されていますか? C標準はこれについて何と言っていますか?