1
do {instructions...}
while (x--)

最初に指示を実行し、次にそうxでないかどうかを確認0し、結果に従ってループを続行/または終了し、これらすべての操作がデクリメントした後にのみ実行する必要 xがあります。

しかし、私のコンパイラは最初にデクリメントします

誰が間違っていますか?私または私のコンパイラ;-)?理由を教えていただけますか?

4

3 に答える 3

3

あなたの言っていること

最初に命令を実行し、次に「x」が「0」でないかどうかを確認し、結果に従ってループを続行/終了し、すべての操作が「x」をデクリメントした後にのみ実行する必要があります

どうあるべきか

最初に命令を実行し、次に「x」が「0」でないかどうかを確認し、次に「x」をデクリメントして、結果に従ってループを続行/または終了する必要があります

于 2012-04-12T14:33:02.783 に答える
3

C の多くの式には、副作用があります。

x--の場合、値x以前の値です。副作用はxの値を減らすことです。

したがって、x1 から開始すると、実行がその式に到達すると、 1が生成され、0に設定されますx。次に式が評価されると、0x設定され-1、...に設定されます。

于 2012-04-12T14:49:58.723 に答える
1

流れは:

1)指示を行う

2)xの値を確認します

3.1)x == 0ですか?次にx--(xは-1になります)を実行し、ループを終了します

3.2)x!= 0ですか?次にx--を実行し、手順1)に進みます。

于 2012-04-12T14:32:29.230 に答える