SORU
10 AĞUSTOS 2010, Salı


bool operatörü ve ...

Beni şaşkına çeviren bir şey ile karşılaştım bazı Visual C kod yazarken bugün. Bool, ama ... (azaltma) için C destekler (artış) gibi görünüyor. Sadece rastgele bir karar bu, yoksa bazıları bunun arkasındaki neden?

Bu derler:

  static HMODULE hMod = NULL;
  static bool once = false;
  if (!once  )
    hMod = LoadLibrary("xxx");

Bu değildir:

  static HMODULE hMod = NULL;
  static bool once = true;
  if (once--)
    hMod = LoadLibrary("xxx");

CEVAP
10 AĞUSTOS 2010, Salı


Boolean değerleri tamsayı değerleri kullanma tarihi geliyor.

x int, ama ben kullanarak bir Boole gibi başına if(x)... sonra artan anlamına gelir ne olursa olsun onun gerçek değeri işleminden önce, bir doğruluk-değeri true sonra (taşma engelleme).

Ancak, bu imkansız tahmin sonucu -- verilen bilgi sadece gerçek değeri x olarak sonuçlanabilir false (integral değeri 1) veya true (integral değer başka bir şey, özellikle bu içerir 0 [false] ve 2 ya da daha fazla [true]).

Çok kısa bir el gibi çalıştı, ve -- yoktu.

ile uyumluluk için bools izin verilir, ancak kullanımı standart önerilmiyor.


Bu benim varsayarsadecebir boolean olarak x, taşma kendi üzerinde bir taşma neden olacak kadar sık yaptığım kadar olamaz, yani kullanın. Hatta char olarak kullanılan ve CHAR_BITS bir şey gibi düşük 5, 32 kez bu işe yaramıyor artık (hala tartışma için yeterli olmanın bir kötü uygulama, savunmuyorum bu uygulama, sadece açıklayan neden çalışır) için bir 32-bit int biz tabi ki kullanmak zorunda 2^32 defa bu bir sorun. Sadece true veya 0 ile başladığı için 1 değeri ile başladım ve tam da daha önce kullanılan false neden olsa -- ile.

Bu ise 0 aşağıda sadece bir kaç bir değer ile başlarsak farklıdır. Gerçekten de, böyle bir durumda false DEĞER gibi: sonunda sonuç

int x = -5;
while(  x)
  doSomething(x);

Ancak, bu örnek, denk geliyor yani koşullu hariç her yerde int,: x davranır

int x = -5;
while(  x != 0)
  doSomething(x);

Sadece bir boolean olarak x kullanarak farklı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Peyton

    Peyton

    28 Aralık 2008
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009