คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
>
> m= &tree[move[ply+1]++];
> 1.ที่สงสัยคือ ++ คือเอาค่าอะไรไป +
>
เอาค่าเดิมไปบวก แต่ใน expression ของ postfix increment จะได้ผลออกเป็นค่าเดิมก่อน
postfix increment operator
https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators
https://en.cppreference.com/w/cpp/language/expressions
ดังนั้น evaluate แบบ inside-out
ply+1 : ค่า ply+1
move[ply+1] : ค่า object ในสล็อตนั้นของอะเรย์ move
move[ply+1]++ : ค่า object ในสล็อตนั้นของอะเรย์ move เพิ่มขึ้น 1 แต่ตอนนี้คืนค่าเดิมออกไปก่อน
tree[move[ply+1]++] : ค่า object ในสล็อตลำดับที่เท่ากับค่าใน move[ply+1] ก่อนถูก increment ของอะเรย์ tree
&tree[move[ply+1]++] : ค่า address ของ object ในสล็อตลำดับที่เท่ากับค่าใน move[ply+1] ก่อนถูก increment ของอะเรย์ tree
>
> m->a=a;
> 2. อันนี้คืออะไร
>
pointer dereference and member access
สมมติ m เป็นถัง address ที่มีเลชที่อยู่ของ object หนึ่ง
1. m->a : คือค่าของ member a ของ object นั้น [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
2. m->a = a : assign ค่าที่มีชื่อว่า a ภายใน local scope นี้ ให้กับ member a ของ object นั้น
> m= &tree[move[ply+1]++];
> 1.ที่สงสัยคือ ++ คือเอาค่าอะไรไป +
>
เอาค่าเดิมไปบวก แต่ใน expression ของ postfix increment จะได้ผลออกเป็นค่าเดิมก่อน
postfix increment operator
https://stackoverflow.com/questions/7031326/what-is-the-difference-between-prefix-and-postfix-operators
https://en.cppreference.com/w/cpp/language/expressions
ดังนั้น evaluate แบบ inside-out
ply+1 : ค่า ply+1
move[ply+1] : ค่า object ในสล็อตนั้นของอะเรย์ move
move[ply+1]++ : ค่า object ในสล็อตนั้นของอะเรย์ move เพิ่มขึ้น 1 แต่ตอนนี้คืนค่าเดิมออกไปก่อน
tree[move[ply+1]++] : ค่า object ในสล็อตลำดับที่เท่ากับค่าใน move[ply+1] ก่อนถูก increment ของอะเรย์ tree
&tree[move[ply+1]++] : ค่า address ของ object ในสล็อตลำดับที่เท่ากับค่าใน move[ply+1] ก่อนถูก increment ของอะเรย์ tree
>
> m->a=a;
> 2. อันนี้คืออะไร
>
pointer dereference and member access
สมมติ m เป็นถัง address ที่มีเลชที่อยู่ของ object หนึ่ง
1. m->a : คือค่าของ member a ของ object นั้น [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
2. m->a = a : assign ค่าที่มีชื่อว่า a ภายใน local scope นี้ ให้กับ member a ของ object นั้น
แสดงความคิดเห็น
ภาษา C แบบนี้หมายความว่าไงหรือ
m เป็น pointer
m= &tree[move[ply+1]++];
1.ที่สงสัยคือ ++ คือเอาค่าอะไรไป +
m->a=a;
2. อันนี้คืออะไร