現在、私はCのプライマーからcを研究しています。 ++
演算子を使用すると、マシンレベルの言語に似ているので、プログラムの効率が向上すると書かれています。インクリメント演算子(++/- )はプログラムの効率をどのように向上させるのですか
は、だから私はさらにそれがすなわちC声明
今日ではそれは問題ではない程度の操作現在、私はCのプライマーからcを研究しています。 ++
演算子を使用すると、マシンレベルの言語に似ているので、プログラムの効率が向上すると書かれています。インクリメント演算子(++/- )はプログラムの効率をどのように向上させるのですか
は、だから私はさらにそれがすなわちC声明
今日ではそれは問題ではない程度の操作i++;
は
i += 1;
又はとして効率の点で同一であります
i = i + 1;
最新のコンパイラは、上記の記述がすべて同じで、最も効率的なCPU命令を使用していることを完全に認識しています。
現代のツールとコンパイラでは、あるものが別のものより優れていると仮定する理由はありません。それは "統語的なキャンディ"です。確認したい場合は、コードを逆アセンブルして相違点を調べます。私は、クロックサイクルごとにカウントされる(そして数えることができる)マイクロコントローラの世界でそれを調べるために頻繁に逆アセンブルします。
しかし++ XおよびX ++ X 前にその次の使用++のxの増分など、条件に応じて異なっていてもよく、X ++刻み、それの後にあります:
int x = 0;
while (x++ < 10) { do something }
が異なっより
int x = 0;
while (++x < 10) { do something}
を動作します
しかし、最新のツールを使用してパフォーマンスが向上する限り、xを1ずつインクリメントする方法はすべて同じです。
文言: '++ x'は最初に' x'をインクリメントし、新しい値を返します。 'x ++'は 'x'の値を返し、インクリメントします(*"次の使用の前に* "は混乱します) – UnholySheep
1. CとC++は別の言語です2.どこを読んだのですか?あなたが非常に古い/非効率なコンパイラを持っていない限り、通常は間違っています – UnholySheep
Hyi ...ポイントを言及するためのthnks。第2に、新しいスマートコンパイラが++ xをx = x + 1に変更して効率を低下させることも述べました。私はあなたが正しいことを知っていますが、私はちょうど古いコンパイラが++演算子を使ってより良い実行方法を知りたがっています – user8043557
あなたはその情報をどこから得るのか説明する必要があります。しかし、非常に古くなったコンパイラは、Cとアセンブリのアセンブリをほぼ1対1で単純に実行していたので、 '++ '演算子は、例えば' INC'命令にマッピングされていました( 'x = x + 1'は複数説明書)。現代のコンパイラは、コードを最適化する上でより良い方法であり、どちらの場合でもそうします。 – UnholySheep