私がベンチマークしていたこのコードは、最適化が有効になっているときに実行が停止しないことに気付きました.MinGW 4.7.0でコードブロックを使用しています.
イテレータをunsigned i;ループに変更すると、最適化がオンになって終了します。int i;それ以外の場合は、宣言を使用するために最適化をオフにする必要があります。
int main(void)
{
int i;
int a, b;
a = 5; b = 24;
for(i = 0; i < 2700000000; i++)
asm_swap(&a, &b);
return 0;
}
warning: this decimal constant is unsigned only in ISO C90 [enabled by default]明らかに 27 億定数に言及するものもあります。intこれが何かを変えたりunsigned、この値を運ぶことができるとは思わない. 説明がありません。
intタイプと最適化を有効にすることの問題は何ですか?