[解決済み] whileループの最後にあるn++と++nの違い?(ANSI C)
2022-03-06 05:43:05
質問
これは多分馬鹿な質問だと思うのですが、どうしても分かりません。n++と++nの違いに関係することです(理解しているつもりでしたが、どうやらそうではないようです)。
#include <stdio.h>
#include <math.h>
long algorithmA(int n);
long algorithmB(int n);
int main(){
long A, B;
A = B = 0;
int n = 1;
while(A >= B){
A = algorithmA(n);
B = algorithmB(n);
n++;
}
printf("At n = %d, Algorithm A performs in %ld seconds & "
"Algorithm B performs in %ld seconds.", n, A, B);
}
long algorithmA(int n){
return pow(n,4) * 86400 * 4;
}
long algorithmB(int n){
return pow(3,n);
}
ここで、アルゴリズムAがアルゴリズムBをどの時点で上回るか試していることがわかると思います。
ところで、whileループの最後では、"++"の順番は関係ないとずっと思っていました。しかし、n++の代わりに++nを置くと、間違った答えになります。誰か理由を説明してください。
編集:そうですね、++nで24、n++で25と表示されましたが、別の理由だったのでしょう。というのも、今確認したところ、何の違いもなかったからです。しかし、私は今確認しましたが、違いはありませんでした。
解決方法は?
との唯一の違いは
n++
と
++n
は、その
n++
の元の値が得られる。
n
であり、かつ
++n
の値が得られる。
n
がインクリメントされた後です。 両方とも
n
をインクリメントすることで
あなたのコードのように、結果が破棄される場合は、効果的な違いはありません。
を書くかどうかで、プログラムの動作が変わってしまうのであれば、そのようなことはありません。
n++;
または
++n;
何か他の理由があるのでしょう。
実際、私のシステムであなたのプログラムをコンパイルして実行すると、どちらの場合もまったく同じ出力が得られます。 出力フォーマットに改行を加えると、こうなります。
At n = 25, Algorithm A performs in 114661785600 seconds &
Algorithm B performs in 282429536481 seconds.
どのような出力が得られているのか、教えていただけません。 両方の場合の出力を表示するように質問を更新してください。
関連
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] mallocとcallocの違い?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] C言語のi++と++iに性能差はあるのでしょうか?
-
[解決済み] C++でi++と++iの間に性能差はありますか?
-
[解決済み】定義と宣言の違いは何ですか?
-
[解決済み】ループ内のプリインクライメントとポストインクライメントの違い?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:cの入力の最後に期待される宣言またはステートメント
-
[解決済み】組み込み関数「malloc」の暗黙の宣言の非互換性
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】javaのx++と++xは違うのですか?
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】エラー:不明な型名'bool'