C'nin eski günlerinde, boole türü yoktu. İnsanlar int
boolean verileri depolamak için kullandılar ve çoğunlukla işe yaradı. Sıfır yanlıştı ve her şey doğruydu.
Bunun anlamı bir int flag = 0;
ve daha sonra aldıysanız flag++
değeri doğru olurdu. Bu, bayrağın değeri ne olursa olsun işe yarayacaktı (çok fazla yapmadıysanız, devrildi ve sıfıra geri döndünüz, ancak bunu görmezden gelelim) - bayrağını değeri 1 olduğunda artırarak 2'yi verdi. doğru.
Bazı insanlar bunu koşulsuz olarak bir boole değeri true olarak ayarlamak için kullandılar. Aptalca bir hale geldiğinden emin değilim , ama bazı kodlar içinde.
Bu asla işe yaramadı --
, çünkü değer 1'den başka bir şey olsaydı (ki olabilirdi), değer hala yanlış olmazdı. Ve eğer zaten yanlıştıysa ( 0
) ve üzerinde bir azaltma operatörü yapmış olsaydınız, yanlış olmazdı.
İlk günlerde C kodunu C ++ 'a taşırken, C ++' da bulunan C kodunun hala çalışabilmesi çok önemliydi. Ve böylece C ++ şartnamesinde (bölüm 5.2.6 (sayfa 71)) okur:
Bir postfix ++ uygulanarak elde edilen değer, operandın operatörü uygulamadan önce sahip olduğu değerdir. [Not: Elde edilen değer orijinal değerin bir kopyasıdır] Operand değiştirilebilir bir değer olacaktır. İşlenenin türü aritmetik bir tür veya tam bir nesne türüne bir gösterici olacaktır. Sonuç belirtildikten sonra, nesne türü bool
, nesne türü olmadığı sürece, 1'e eklenerek değiştirilir , bu durumda true olarak ayarlanır. [Not: bu kullanım kullanımdan kaldırılmıştır, bakınız Ek D]
Sonek işleneni - işlenenin türünde olmaması dışında, sonek ++ işlecine benzer şekilde azaltılır bool
.
Bu yine bölüm 5.3.2'de belirtilmiştir (önek operatörü için - 5.2.6 posta ekinde idi)
Gördüğünüz gibi, bu kullanımdan kaldırılmıştır (belgede Ek D, Sayfa 709) ve kullanılmamalıdır.
Ama bu yüzden. Ve bazen kodu görebilirsiniz. Ama yapma.