2017-05-21 8 views
-3

現在、私はCのプライマーからcを研究しています。 ++演算子を使用すると、マシンレベルの言語に似ているので、プログラムの効率が向上すると書かれています。インクリメント演算子(++/- )はプログラムの効率をどのように向上させるのですか

は、だから私はさらにそれがすなわちC声明

今日ではそれは問題ではない程度の操作
+4

1. CとC++は別の言語です2.どこを読んだのですか?あなたが非常に古い/非効率なコンパイラを持っていない限り、通常は間違っています – UnholySheep

+0

Hyi ...ポイントを言及するためのthnks。第2に、新しいスマートコンパイラが++ xをx = x + 1に変更して効率を低下させることも述べました。私はあなたが正しいことを知っていますが、私はちょうど古いコンパイラが++演算子を使ってより良い実行方法を知りたがっています – user8043557

+2

あなたはその情報をどこから得るのか説明する必要があります。しかし、非常に古くなったコンパイラは、Cとアセンブリのアセンブリをほぼ1対1で単純に実行していたので、 '++ '演算子は、例えば' INC'命令にマッピングされていました( 'x = x + 1'は複数説明書)。現代のコンパイラは、コードを最適化する上でより良い方法であり、どちらの場合でもそうします。 – UnholySheep

答えて

3

を追加するよう求めている以前に尋ねた質問とは異なります、これはマシンレベルの言語 に似ているかということを知りたいです

i++; 

i += 1; 

又はとして効率の点で同一であります

i = i + 1; 

最新のコンパイラは、上記の記述がすべて同じで、最も効率的なCPU命令を使用していることを完全に認識しています。

0

現代のツールとコンパイラでは、あるものが別のものより優れていると仮定する理由はありません。それは "統語的なキャンディ"です。確認したい場合は、コードを逆アセンブルして相違点を調べます。私は、クロックサイクルごとにカウントされる(そして数えることができる)マイクロコントローラの世界でそれを調べるために頻繁に逆アセンブルします。

しかし++ XおよびX ++ X 前にその次の使用++のxの増分など、条件に応じて異なっていてもよく、X ++刻み、それの後にあります:

int x = 0; 
while (x++ < 10) { do something } 

が異なっより

int x = 0; 
while (++x < 10) { do something} 
を動作します

しかし、最新のツールを使用してパフォーマンスが向上する限り、xを1ずつインクリメントする方法はすべて同じです。

+0

文言: '++ x'は最初に' x'をインクリメントし、新しい値を返します。 'x ++'は 'x'の値を返し、インクリメントします(*"次の使用の前に* "は混乱します) – UnholySheep

関連する問題