>>857
そのコードが未定義かどうかは達成しようとしている目的による
たとえば、こういう場合
int x = 0;
int foo(void) { return ++x; }
int bar(void) { return ++x; }
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
fooとbarの実行順序に依存すると
実行順序は未規定だが、未規定に依存することは禁止で、
その禁止を破ったせいでmainの動作が未定義となる
これに対して、
int foo(void) {return 1;}
int bar(void) {return 2;}
int main(void)
{
int y = foo() - bar();
assert(y == -1);
}
この例では未規定の動作を含むが
その未規定がどう転んでも影響がない、
つまり依存していないので未定義の動作とはならない
C言語なら俺に聞け 150
■ このスレッドは過去ログ倉庫に格納されています
858デフォルトの名無しさん (ワッチョイ 13b6-B/CD)
2019/03/20(水) 17:44:50.88ID:Jx7dUCON0■ このスレッドは過去ログ倉庫に格納されています
