Swift:运算符优先级和关联性➕➖✖️➗

ลำดับความสำคัญก่อนหลังของ运营商

运算符的优先级和关联性เนื้อเน้นๆอยู่ล่างๆ

社交网络社交网络社交网络社交网络社交网络pantip等。

1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1–1 + 1 + 1 + 1 + 1 + 1×0

ถ้าเจอแบบนี้กันคิดว่าผลลัพท์ของโจทย์นี้คือเท่าไหร่??? ก็มีตั้งแต่อบของแต่ละคนก็มีตั้งแต่0,14,16,17,…แค่วงเล็บหายนี่เถียงกันไม่มีที่สั้นสุดจะคูณก่อนบวกก่อนหรือลบก่อนจะทำหลังไปหน้าหรือหน้าไปหลังนู้นนี่นั้นแต่ละคนแต่ละคนท 555555คำถามคือแล้วอแล้วนไหนมันเป็นเป็นคำตอบที่ถูกหละ?

วิธีการหาคำตอบจึงต้องมีหลักการคิดที่แน่นอนเช่นคิดเครื่องหมายไหนก่อนซ้ายไปขวาหรือขวาไปซ้าย

➡อบที่ถูกต้องจริงๆของโจทย์ข้อนี้ก็มีหลายคำตอบ➡️ เนื่องจากหลักหรือวิธีคิดก็มีหลายรูปแบบ……#เอ้าาาาาาา😱แบบนี้ก็ได้เหรอ

Blogาอยากทราบเนื้อหาเรื่องนี้อย่างละเอียดแนะนำให้อ่านBlogของพี่NuuNeoi

NuuNeoI –ทำไมต้องคูณหารก่อนบวกลบ? มาย้อนความหลังกันกับเรื่องราวของ操作顺序
数学运算符运算符运算符运算符运算符运算符运算符… nuuneoi.com

แล้วเกี่ยวกับการเขียนโปรแกรมยังไงหละคุณ? 💻

dingน่นอนการ编码ก็จำเป็นต้องมีหลักการคิดเหมือนกันแต่สิ่งที่แตกต่างก็คือภาษาSwiftนั้นมีหลักและการดำเนินกนการที่ตกลงไว้แล้วรนรั้นดังน คำนวนหรือจัดการกับแต่ละ运营商อย่างไหร่ตัวอย่างเช่น

 变数= 2 +((3%4)* 5) 

น่าจะนึกออกว่าnumber = 17🍌ๆ🍌ๆาแบบนี้หละ

变数= 2 + 3 % 4 * 5 

“าไม่รู้จะเกรียนบอกว่า“มีได้หลายคำตอบ”ก็ไม่ได้นะ55555555คิดไม่ออกบอกไม่ถูกไปดูเรื่อง优先顺序和关联性ด้านล่างต่อ..

运算符的优先级和关联性

运算符优先级♦️

运算符优先级运算符优先级 แบ่งได้เป็นกลุ่มๆแต่ละกลุ่มก็จะมี运营商อยู่หลายตัวไล่จากกลุ่มที่บนสุดซึ่งมี优先สูงสุดจะดำเนินการก่อนไปเรื่อยๆจนถึงกลุ่มที่优先อ(อยู่ลิสล่างสุด)

操作员关联性♦️

ณีที่อgroupารเท่ระทำว่าให้ทำจากซ้าไปขวาหรือขวาไปซ้ายในกรณีที่运算符

前缀运算符:

  • ! ~ +

中缀运算符:

Precedence group — Operator associativity: Operators

  • 按位移位 —无: << >>
  • 乘法 -左联想: * / % & * &
  • 加法 —左联想: + - &+ &- | ^
  • 范围形成 -无: ..<
  • 强制转换 —左联想is as, as?,and as !
  • 无合并 -右关联??
  • 比较 —无: < <= > >= == != === !== ~=
  • 逻辑连接 -左关联: &&
  • 逻辑分离 -左联想: ||
  • 三元数 -右联想: ?:
  • 分配 —右关联: = *= /= %= += -= <<= >>= &= |= ^=

例如📋

  //ตัวอย่างจากด้านบน 
 变数= 2 + 3%4 * 5 
  1. % , * นแรกดูเร็วๆคือ % , * สำคัญกว่า + เพราะงั้นนำมาคำนวนก่อนแน่นอนถ้าให้อธิบายคือ มี优先组 ทั้งหมด2 group % , * คือMultiplicationและ + คือ加法ถ้าเทียบด้านบนจะเห็นว่า 乘法(% ,*) มาก่อนหรือมี优先มากกว่า 加法(+) ฉะนั้นจึงต้องดำเดินการกับ % , * ก่อนตามนี้ var number = 2 + (3 % 4 * 5)
  2. %อมาประเด็นคือ%กับ*ก็ดันนนนนนนติดกันอีกแล้วจะทำอะไรก่อนหละแบบนี้ 2 + ((3 % 4) * 5) หรือแบบนี้ 2 + (3 % (4 * 5))优先级组优先级组优先级组优先级组优先级组优先级组优先级组优先级组优先级组优先级组3 % 4 รุปคือเอา 3 % 4 ก่อนแล้วค่อยไป * 5 ได้เป็น (( 3 % 4 ) *5 )

ี้ายจะได้หน้าตาประมาณนี้变数var number = 2 + ((3 % 4) * 5)

编号จึงเท่ากับ17🎉ตัวอย่างก็เบสิกๆเขียนจริงก็คงจะเจออะไรเยอะกว่านี้ไม่ใช่แค่赋予值อย่างเดียกับนจึงเท่นอนฮ่าๆแต่ก็ไม่มีอะไรน่าเป็นห่วงหลักการเดีย กับกับ!