2016-02-16 17 views
8

Standardı aradım ama bahsi geçen kısmı fark etmedim.! 0 C89 da 1 olma garantili

Sadece "0'dan başka bir şey" ve 1 veya derleyici bağımlı mı? Bunu terimin değeri sonucu int tip sahip 0'a eşit karşılaştırır eğer onun terimin değeri 0, 1 e eşit karşılaştırır eğer

+3

Dahili operatörleri ('<', '>', '<=', '> =', '==', '! =', '&&' '||' '!') her zaman tam olarak verim 'Int' türünde 0' veya '1'. 'Isdigit()' gibi belirli kütüphane işlevleri, true için true veya sıfır olmayan herhangi bir değer için '0 'döndürür. –

cevap

23

mantıksal DEĞİL operatörü ! sonucu 0'dır.

C89/C90, C99 ve C11'de görüntülenir.

+2

Bunu bulduğunuz yerdeki bağlantıyı ekleyebilir misiniz? – AustinWBryan

+1

http://port70.net/~nsz/c/c89/c89-draft.html#3.3.3.3 –

+0

Çok teşekkür ederim! – susdu

4

Hobbs'un cevabında, section 6.5.3.3.5 of the C standard, !0'un 1 olarak değerlendirdiğini belirtir. Ayrıca, bu davranış !!x ifadesiyle bir tamsayıyı bir boolean değerine (yani 0 veya 1) normalleştirmek için kullanılabilir.

  • zaman x = 0, !!x = !!0 = !1 = 0.
  • zaman x! = 0, !x = 0 yüzden !!x = !0 = 1. mantıksal olarak Boole sonuçlar
İlgili konular