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

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • David MeShow

    David MeShow

    10 EKİM 2006
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013

İLGİLİ SORU / CEVAPLAR