yılında sürpriz dize çoğul artı boolean üçlü operasyonun benzer etkiye sahiptir:const dize artı boolean Ben C
int apple = 2;
printf("apple%s\n", "s" + (apple <= 1));
apple <= 1
ise, elma yazdırılır. Bu neden çalışıyor?
yılında sürpriz dize çoğul artı boolean üçlü operasyonun benzer etkiye sahiptir:const dize artı boolean Ben C
int apple = 2;
printf("apple%s\n", "s" + (apple <= 1));
apple <= 1
ise, elma yazdırılır. Bu neden çalışıyor?
Durum 0 ya da 1 olarak değerlendirildiğinden ve "s"
dizesi 0 sonlandırıcıdan önce tam olarak bir karakter içeriyor. Bu nedenle "s" + bool
, bool
yanlışsa "s"
adresinin adresini değerlendirecek ve bunun arkasında bir karakter, eğer doğruysa, 0 sonlandırıcı adresi.
Bu harika bir bilgisayar korsanlığıdır, ancak hiç bir zaman böyle kod kullanmayın.
ah, anlıyorum ... teşekkürler – Oxdeadbeef