สวัสดีและยินดีต้อนรับ. ตอนนี้เราได้พูดถึงโอเปอเรเตอร์หลักทั้งหมด
ตัวพื้นฐาน ตัวประหลาดแล้ว เราต้องพูดถึงแนวคิดเล็กๆ น้อยๆ
ของลำดับความสำคัญของโอเปอเรเตอร์
ดังนั้นสิ่งนี้จึงมีบทบาทโดยทั่วไปเมื่อคุณประเมินลำดับของตัวดำเนินการเหล่านี้อย่างไร
ดังนั้น ลำดับความสำคัญของตัวดำเนินการจะกำหนดการจัดกลุ่มของคำและนิพจน์
และตัดสินใจว่าจะประเมินนิพจน์อย่างไร
ตอนนี้คุณไม่จำเป็นต้องเข้าใจสิ่งนี้จริงๆ หากคุณใช้วงเล็บที่เราจะพูดถึงในไม่กี่วินาที
แต่คุณต้องเข้าใจแนวคิดนี้เพราะมันเป็นส่วนหนึ่งของภาษา เป็นส่วนหนึ่งของการเข้าใจภาษา
ลำดับความสำคัญจะเป็นตัวกำหนดลำดับของการประเมินเมื่อตัวดำเนินการสองตัวใช้ตัวถูกดำเนินการร่วมกัน
และนี่จะชัดเจนด้วยตัวอย่าง
ตัวอย่างเช่น ตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการเพิ่มเติม
ผู้ปฏิบัติงานบางคนจะมีลำดับการประเมินที่แตกต่างกัน ดังนั้น หากคุณจะทำคำสั่งผสมที่คุณทำการคำนวณต่างๆ
เช่น 7 บวก 3 คูณ 2
นี้สามารถมีได้หลายผลลัพธ์
บวก และคุณกำลังทำการคูณ
คุณต้องเข้าใจว่าฉันต้องบวกก่อนหรือฉันควรคูณก่อนเพราะขึ้นอยู่กับสิ่งที่คุณทำก่อนจะเปลี่ยนผลลัพธ์
ตัวอย่างเช่น x นี่เท่ากับ 7 บวก 3 คูณ 2 ผลลัพธ์อาจเป็น
13 หรือ 20 ขึ้นอยู่กับลำดับเวลาที่คุณประเมินตัวถูกดำเนินการแต่ละตัว
ดังนั้นลำดับของการดำเนินการต่าง ๆ สามารถสร้างความแตกต่างได้มาก
และนี่คือเหตุผลที่คุณต้องเข้าใจลำดับความสำคัญ
C กำหนดกฎเฉพาะสำหรับการเลือกว่าจะทำอะไรก่อน
ในกรณีนี้ ฉันจะคูณบวกหรือไม่ ซีกำลังจะบอกคุณว่าจะเกิดอะไรขึ้น
จะเป็นการดีหากคุณใส่วงเล็บลงในวงเล็บ คุณจะบอกว่าต้องทำอะไร
เท่ากับกำลังตัดสินใจ แต่ถ้าคุณไม่ใส่ในวงเล็บ ภาษาโปรแกรมจะตัดสินใจแทนคุณ
ดังนั้นใน c การคูณจะมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก
สิ่งที่จะเกิดขึ้นคือผลลัพธ์จะเป็น 13
ตอนนี้คุณสามารถบอกว่า 7 บวก 3 ซึ่งก็คือ 10
แล้วคูณด้วย 2 ผลลัพธ์ที่ได้จะเป็น 20
หรือคุณสามารถทำ 7 บวก 3 คูณ 2, ซึ่งก็คือ 7 บวก 6 ซึ่งก็คือ 13
นั่นเป็นวิธีที่คุณสามารถมีค่าต่างกันได้
ที่คลุมเครือ คุณบวกก่อนหรือคุณคูณก่อน
โชคดีที่ตัดสินใจด้วยภาษา แต่คุณสามารถดูได้ว่าผลลัพธ์ทั้งสองต่างกันอย่างไร
7 บวก 3 คูณ 2 หรือ
7 บวก 3 คูณ 2 คุณเห็นการหยุดอยู่ที่นั่น
ตอนนี้ c จะทำอย่างหลัง มันจะทำการคูณก่อนเพราะมันมีลำดับความสำคัญสูงกว่า
มันจึงเท่ากับ 3 คูณ 2, ซึ่งก็คือ 6 แล้วบวกกับ 7
ผลลัพธ์ x จะเท่ากับ 13 เพราะดอกจันมีลำดับความสำคัญสูงกว่าการบวก
ดังนั้นจึงมีกฎสำหรับโอเปอเรเตอร์ทุกตัว ซึ่งโอเปอเรเตอร์มีความสำคัญเหนือกว่าโอเปอเรเตอร์อื่นๆ
มีระดับความสำคัญ
และการคูณและการหารมีความสำคัญมากกว่าการบวกและการลบ
นั่นคือพวกเขาถูกดำเนินการก่อนเช่น
คุณสามารถหลีกเลี่ยงลำดับความสำคัญทั้งหมดนี้และให้ภาษาตัดสินใจแทนคุณได้หากคุณใส่วงเล็บไว้
วงเล็บจะจัดกลุ่มนิพจน์ที่มีลำดับความสำคัญสูงสุดเสมอ
ถ้าผมบอกว่า
7 บวก 3 และใส่ในวงเล็บ, มันจะบวกก่อนเสมอ
ถ้าฉันบอกว่า 3
คูณ 2 และใส่มันไว้ในวงเล็บ มันจะทำการคูณเสมอ
แล้วบวกอะไรก็ตามที่อยู่นอกวงเล็บ
ดังนั้นคุณควรใช้วงเล็บเท่านั้น ใช้วงเล็บเสมอ
มิฉะนั้น ภาษาจะเป็นตัวกำหนดสำหรับคุณ คุณต้องจำระดับความสำคัญทั้งหมดซึ่งทำได้ยาก
อย่างที่ผมจะแสดงให้คุณเห็นในตารางถัดไป
มีโอเปอเรเตอร์ที่แตกต่างกันมากมาย และคุณต้องทราบลำดับความสำคัญของโอเปอเรเตอร์ที่แตกต่างกันทั้งหมดเหล่านี้
ดังนั้นจึงอาจเกิดความสับสนได้มาก
สิ่งนี้คล้ายกับที่คุณรู้ว่าคุณปล่อยให้ภาษาทำการแปลงโดยนัยสำหรับคุณหรือคุณทำโดยการแปลงอย่างชัดเจนด้วยตัวดำเนินการ
cast ซึ่งเป็นแนวคิดแบบเดียวกันที่นี่ เพียงแค่ใช้วงเล็บ
ดังนั้นถ้าเราดูตารางนี้ ซึ่งเราจะดูกันอีกที ฉันเดาว่าเพราะฉันต้องการพูดถึงการเชื่อมโยงกันก่อน
การเชื่อมโยงเกี่ยวข้องกับลำดับความสำคัญเพราะจะเกิดอะไรขึ้นถ้าตัวดำเนินการสองตัวมีความสำคัญเท่ากัน
แล้วจะคิดออกคำสั่งได้อย่างไร..
จากนั้นคุณใช้การเชื่อมโยง ดังนั้นเมื่อใดก็ตามที่โอเปอเรเตอร์มีลำดับความสำคัญเท่ากัน
คุณจะต้องใช้กฎเพิ่มเติม
โดยพื้นฐานแล้วการเชื่อมโยงกันนั้นขึ้นอยู่กับว่าคุณเริ่มต้นทางด้านซ้ายและไปทางขวาหรือทางขวาไปทางซ้าย
ดังนั้น หากคุณใช้ตัวถูกดำเนินการร่วมกัน และทั้งคู่ถูกดำเนินการในลำดับเดียวกัน
คุณจะต้องดำเนินการตามลำดับของคำสั่งตามกฎการเชื่อมโยง
ดังนั้นสำหรับโอเปอเรเตอร์ส่วนใหญ่
ลำดับคือจากซ้ายไปขวา ให้ฉันแสดงตัวอย่างให้คุณดู
ถ้าคุณบอกว่า 1 เท่ากับ 2 ไม่เท่ากับ 3 เครื่องหมายอัศเจรีย์เท่ากับและเครื่องหมายอัศเจรีย์ไม่เท่ากับตัวดำเนินการเท่ากับมีลำดับความสำคัญเท่ากัน
ในกรณีนี้ เรามีความกำกวม เรามีปัญหา.
เราไม่รู้จะประเมินอะไรก่อน เราไม่รู้ว่าเราต้องทำ 1 เท่ากับ
2 หรือ 2 ไม่เท่ากับ 3 หรือไม่
และมันสำคัญเพราะคุณกำลังใช้นิพจน์บูลีน
นี่คือนิพจน์บูลีนตรงนี้ ดังนั้นมันจึงคืนค่าเป็นจริงหรือเท็จ
ดังนั้นสิ่งที่คุณจะทำที่นี่คือคุณจะใช้การเชื่อมโยง
การเชื่อมโยงของทั้งสองเท่ากับเท่ากับและไม่เท่ากับถูกซ้ายไปขวา
คุณจะทำ 1 เท่ากับ 2 ก่อน, นั่นจะเป็นเท็จ
แล้วคุณจะบอกว่าเท็จ ซึ่งไม่เท่ากับ
3
ซึ่งไม่ใช่ 1 เท่ากับ 2 แล้วนั่นไม่เท่ากับ
3
ดังนั้นผลลัพธ์จะเป็นเท็จ ดังนั้นนิพจน์ทางด้านซ้ายจะถูกดำเนินการก่อนและเลื่อนไปทางขวา
วิธีที่คุณอยากคิดก็คือ โดยพื้นฐานแล้ว มันเท่ากับวงเล็บพวกนี้
อย่างแรก คุณจะประเมินว่า 1 เท่ากับ 2
แล้วถ้าค่านั้นมีค่าจริงหรือเท็จ คุณก็จะบอกว่าเท่ากับ 3
และนี่ทำให้เกิดความสับสนเนื่องจากไม่มีค่าจริงหรือเท็จ
แต่ 1 เท่ากับ เท่ากับ จำไว้ว่านั่นคือตัวดำเนินการเปรียบเทียบ ไม่ใช่ตัวดำเนินการมอบหมาย
และเราไม่ได้ใช้ตัวแปรตรงนี้ มันเลยยิ่งสับสน
แต่ถ้าคุณใส่ตัวเลขเหล่านี้ในตัวแปร
คุณจะบอกว่า ถ้า x เท่ากับ y ดังนั้นถ้า x เป็น 1 และ
y เป็น 2 มันจะหาค่า 2 เท็จ
เพราะไม่เท่ากันทั้งคู่ แล้วถ้า 3 เป็นตัวแปร z
อีกตัวหนึ่งซึ่งเท่ากับ
3 คุณจะบอกว่า x เท่ากับ y เป็นเท็จหรือไม่,
z เท่ากับ 3 เท็จจึงไม่เท่ากับ
3 ดังนั้นมันจะเป็นเท็จ
ดังนั้น 1 เท่ากับ 2 ดำเนินการก่อน ผลลัพธ์อีกครั้ง 0 เท็จ
จากนั้น 0 ไม่เท่ากับ 3 ดำเนินการส่งผลให้ 1 เป็นจริง
ตอนแรกผมบอกว่าเท็จ แต่เห็นได้ชัดว่า 0 ไม่เท่ากับ 3 ซึ่งทั้งมวลจะประเมินว่าเป็นเท็จ
สิ่งทั้งหมดจะประเมินเป็นจริง ฉันขอโทษเพราะ 0 ไม่เท่ากับ 3
0 ไม่เท่ากับ 3 ฉันบอกว่ามันเป็นเท็จเพราะมันไม่เท่ากับ แต่นั่นหมายความว่ามันถูกประเมินว่าเป็นจริง
ที่นั่นเรียบร้อยมาก ต่อไปนี้คือตารางของเราที่กล่าวถึงกฎลำดับความสำคัญและความสัมพันธ์ทั้งหมด
และเป็นการยากมากที่จะจดจำสิ่งนี้
อีกครั้ง คุณทำอะไร ใช้วงเล็บ
แต่นี่คือตาราง ระดับความสำคัญสูงสุดอยู่ที่ด้านบน
ดังนั้นตัวดำเนินการ postfix จึงมีระดับความชอบสูงสุด
และถ้าคุณกำลังใช้สิ่งเหล่านั้นในนิพจน์เดียวกัน แสดงว่าคุณอ่านจากซ้ายไปขวา
ดังนั้นตัวดำเนินการ postfix สิ่งต่างๆ เช่น
วงเล็บจะมีลำดับความสำคัญสูงสุด
ดังนั้นทุกครั้งที่คุณใส่บางสิ่งในวงเล็บที่จะมีผล
แต่คุณมีวงเล็บและตัวดำเนินการ
postfix เรายังไม่ได้พูดถึงตัวชี้สองสามตัว
ซึ่งมากกว่าเส้นประนี้ แต่ตอนนี้เรารู้แล้วว่าบวกบวกและลบลบซึ่งเป็น postfix ที่มีลำดับความสำคัญสูงสุด
ตัวดำเนินการเอกนารี
เช่น เครื่องหมายบวก ลบ เครื่องหมายอัศเจรีย์สำหรับ not เครื่องหมายตัวหนอนสำหรับระดับบิต ตัวดำเนินการบวก
บวก ลบ และจากนั้นตัวดำเนินการแคสต์จะเรียกว่าโอเปอเรเตอร์ unary เนื่องจากมีตัวถูกดำเนินการเพียงตัวเดียว
จากนั้นตัวดำเนินการเครื่องหมายดอกจันก็คือตัวดำเนินการตัวชี้ แอมเพอร์แซนด์คือบิตไวด์และขนาดของ
เหล่านี้มีความสำคัญสูงสุดต่อไป
แต่ในที่นี้ คุณกำลังอ่านจากขวาไปซ้ายเพื่อประเมินผล
ถ้าคุณมีข้อความแจ้งสถานะบรรทัดเดียวกันสองอัน
แล้วเราก็แค่ไปในคำสั่งอีกครั้ง คุณต้องรู้คำสั่งนี้และจดจำมัน ค่อนข้างยาก แต่ฉันอยากจะแสดงให้คุณดู
แค่อยากมีภาพประกอบเล็กๆ น้อยๆ เพื่อแสดงตารางบางส่วน
มีโอเปอเรเตอร์มากมาย
ดังนั้นจึงมีระดับการมีอยู่มากมาย และมีความเกี่ยวข้องกันเป็นส่วนใหญ่ ดังที่เรากล่าวไว้ก่อนหน้านี้จากซ้ายไปขวา
คุณมีเพียงการเชื่อมโยงของขวาซ้ายสำหรับโอเปอเรเตอร์เอก
ดังนั้นตัวดำเนินการระดับบิตจะติดตามไปด้านล่าง
จากซ้ายไปขวาทั้งหมด โอเปอเรเตอร์ประกอบแบบมีเงื่อนไขจากขวาไปซ้าย
ตัวดำเนินการมอบหมายจะอยู่ที่ด้านล่างเสมอ ที่ประเมินล่าสุดเสมอ
แล้วถ้าเท่ากัน ตัวอื่นๆ บนนั้น คุณก็ประเมินจากขวาไปซ้าย
จากนั้นเครื่องหมายจุลภาคยังเรียกว่าโอเปอเรเตอร์ ซ้ายไปขวานั่นเอง
แนวคิดอื่นแม้ว่าจะมีลำดับความสำคัญและความสัมพันธ์ที่เราจะไม่พูดถึงจริง
ๆ กับตัวอย่างอื่น ๆ เหล่านี้ เราจะลงเอยด้วยการใช้วงเล็บตลอดเวลา
และนั่นคือสิ่งที่คุณต้องการจะทำ
แต่อีกครั้ง ถ้าคุณต้องการเข้าใจภาษาอย่างถ่องแท้ คุณต้องการเข้าใจแนวคิดเหล่านี้ นั่นคือเหตุผลที่ฉันบอกคุณ
ไม่มีใครสามารถอ้างว่าพวกเขารู้ภาษาได้จริงหากพวกเขาไม่ทราบรายละเอียดบางอย่างเช่นนี้
แต่ใช้วงเล็บให้มากที่สุด ขอขอบคุณ.