C'nin eski günlerinde, boole türü yoktu. İnsanlar intboolean 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.