เปรียบเทียบการเท่ากัน 3 ค่าใน C++

by m3rLinEz 3. January 2009 01:09

วันนี้มีคำถามครับ

เรื่องนี้มีอยู่ว่า จะต้องเปรียบเทียบค่า 3 ค่า ว่ามันเท่ากันรึเปล่า

ผมเขียนอะไรประมาณนี้ลงไป

if(a == b == c){

// Statements

}

ปรากฎว่า Compile ผ่าน และรันได้แฮะ (VC++) แต่ผลลัพธ์ไม่ตรงตามที่ต้องการ ก็นั่งหาอยู่นานว่าเกิดอะไรขึ้น

ให้เวลาคิด 3 บรรทัด

...

...

...

มานั่งคิดดูดีๆ ได้ว่า C++  มัน evaluate boolean condition ข้างบนแบบนี้ครับ

จาก a == b == c เป็น (a == b) == c

กลายเป็นว่า ถ้า a == b อยู่แล้ว จะกลายเป็น true == c แทน!

ตายล่ะ .. แล้วทำไม C++ ไม่แจ้งเตือนเลยล่ะ

ก็เพราะว่า C++ มันใช้พวกจำนวนเต็มแทน condition คือ 0 แทน false นอกนั้นแทน true

แต่ถ้าเป็นภาษาพวก Managed Langauge เช่น C# หรือ Java จะไม่ยอมให้ประโยคข้างบน Compile ผ่าน เพราะซ้ายกับขวามันคนละ Type กัน

เป็นเช่นนี้แล ..

Tags: Category: Native

Comments (2) -

m3rlinez
m3rlinez
1/4/2009 2:22:23 PM #

มานั่งคิดๆดูอีกที เรื่องนี้มันนู้บพอๆกับ if(a > b > c) เลยนี่หว่า 55+

กร
กร
1/4/2009 4:17:55 PM #

นู้บจริงๆด้วย

Add comment




biuquote
  • Comment
  • Preview
Loading






Most comments

khimkhim khimkhim
1 comments
weaw weaw
1 comments
domehuhu domehuhu
1 comments

RecentComments

Comment RSS