SORU
27 Ocak 2009, Salı


Bir döngü içinde ben ve ben arasındaki fark?

for döngü i i bir fark var mı? Sadece sözdizimi bir şey mi?

CEVAP
27 Ocak 2009, Salı


Önceden arttırmakademeli değeri i ve yeni arttırılmış değer değerlendirir.

int i = 3;
int preIncrementResult =   i;
Assert( preIncrementResult == 4 );
Assert( i == 4 );

Olayı benartışlarla ben değeri olmayan artan orijinal değeri değerlendirir.

int i = 3;
int postIncrementResult = i  ;
Assert( postIncrementtResult == 3 );
Assert( i == 4 );

C , artırma öncesi genellikle ya bir kullanım tercih edilir.

Bu olayı kullanırsanız, derleyici ekstra geçici bir değişkeni oluşturan kodu oluşturmak için gereklidir çünkü. Bu değişkenin eski ve yeni değerleri artan her ikisi de gerekli olabilir, çünkü bir yerde yapılacak başka bir yerde değerlendirilen ifade ihtiyacı olmasıdır.

Yani, C En az senin seçimin olan bir performans farkı olabilir.

Bu esas olarak değişken artan bir kullanıcı geçersiz bir operatör türü ile tanımlanan bir sorundur. İlkel türleri (vb int) için performans farkı yok. Ama, olayı operatör sürece bir kılavuz olarak önceden arttırma operatörü yapışmasını gerekli kesinlikle değer.

Burada biraz daha fazla tartışma var:
http://en.allexperts.com/q/C-1040/Increment-operators.htm

Eğer STL kullanıyorsanız C, daha sonra kullanımına ile döngüler için kullanıyor olabilirsiniz. Bunlar genel olarak geçersiz operatörleri, önceden arttırma yapışmasını iyi bir fikirdir. Derleyiciler almak daha akıllı olsa her zaman, ve yeni olanlar olabilir yapabilmek iyileştirmeleri anlamı yok performans farkı - özellikle eğer tip olmak artırılır tanımlanan satır içi başlık dosyası (STL uygulamaları genellikle), böylece derleyici ne kadar bu yöntem uygulanır ve sonra bildiklerini iyileştirmeleri güvenli gerçekleştirmek. Öyle olsa bile, muhtemelen hala döngüler pek çok kez idam olsun çünkü artış ön yapışmasını değer ve bu küçük bir performans ceza yakında güçlendirilmiş olabilir anlamına gelir.


Operatör aşırı olamaz C gibi diğer dillerde# performans farkı yok. Döngü değişkeni önceden bir döngü içinde kullanılan, öncesi ve sonrası artış operatörleri eşdeğerdir.

Düzeltme: C aşırı yükleme# izin verilir. Öyle görünüyor ki, c , c göre, bu# aşırı yüklenme öncesi ve sonrası sürümleri bağımsız olamaz. Çok isterim kabul edersen sonucu arama C# değil atanan bir değişken veya kullanılan bir parçası olarak karmaşık bir ifade, o zaman derleyici azaltmak öncesi ve sonrası sürümler için kod gerçekleştiren kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012