SORU
8 Ocak 2015, PERŞEMBE


C ?x= 10 % bellidir.

Bazı proje kod tarama yaparken aşağıdaki açıklama geldi:

  x %= 10;

C bu deyimi iyi tanımlanmış ya da aynı kategoriye girer mi gibi

a[i] = i  

?

CEVAP
8 Ocak 2015, PERŞEMBE


11 1.9 Program execution /15 C başına:

Aksi belirtilmediği takdirde, bireysel ifadelerin taşıyıcının bireysel operatörleri ve işlenen değerlendirmeler unsequenced.

Eğer skaler bir nesne üzerinde bir yan etkisi aynı skaler nesne üzerinde başka bir yan etkisi ya da değer hesaplama aynı skaler nesnenin değeri kullanarak ya göre unsequenced, davranışı tanımsızdır.

Bu durumda, x bir yan etkisi olduğuna inanıyorum ve x %= 10 tanımsız davranış olacağını düşünüyorsun değer bir hesaplama. AncakatamaBölüm (5.17 /1) demek, bu (cesur)

Her durumda, atama sıralıdeğeri sağ ve sol işlenen hesaplama sonrave değer atama ifade hesaplama önce.

Dolayısıyla bu her iki atama önce sıralı ve atama sonuçları yapılmadan önce anlamına gelir. Ve standartx OP = y x = x OP y aynı zamanda (**10) Eyalet beri ama x sadece bir kez değerlendirilen, bu çıktıPeki eşdeğer olarak tanımlanan davranış,:

  x = Q % 10; // where Q is the value from   x, not evaluated again.

Tek soru o zaman kalıryanatama beri değerlendirilironlarsıralı değil. Ancak, ikisi de aynı etkiye sahip olacağından bu durumda önemli olduğunu sanmıyorum:

  x = Q % 10; // LHS evaluated first
Q =   x % 10; // RHS evaluated first

Şimdi, bubenimstandart okuma. Karmaşık belgeler çözme deneyim adil bir miktar var, oradaolabilirburada canlı bir tartışma bu noktaya gelmek içinde geçirdiğimiz çünkü kaçırdığım bir şey - ben öyle düşünmüyorum :-) ve tüm ilgili bölümleri hemfikiriz sanırım.

Ama, Iyi tanımlanmış olsun veya olmasın, ne olursa olsun, kodlayıcıları iyiolmamalıböyle bir kodu yazmak. PDP çocukları düşük bellek küçük depolama/günlerden bu yana çok zaman geçti, zaman kodu için yazdıkokunabilir.

Eğer artış sonra modül almak istiyorsanız, daha kolay bir sonraki zavallı Joe kod okuma için anlamak yapmak için sadece x = (x 1) % 10 kullanın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008

İLGİLİ SORU / CEVAPLAR