Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่างพฤติกรรมที่ไม่ได้กำหนดไม่ระบุและการใช้งานที่กำหนดไว้ใน C และ C ++?


พฤติกรรมที่ไม่ได้กำหนดเป็นเพียงพฤติกรรมที่ไม่ได้กำหนดโดยข้อกำหนด C++ ตัวอย่างเช่น หากคุณมีการดำเนินการเพิ่ม/ลดค่าเดียวหลายรายการในนิพจน์ เช่น i++ + ++i การดำเนินการดังกล่าวจะส่งผลให้เกิดการทำงานที่ไม่ได้กำหนดไว้ นี่เป็นเพียงเพราะข้อเท็จจริงที่ว่าโครงสร้างภาษาบางภาษานั้นถูกต้องตามหลักไวยากรณ์ แต่คุณไม่สามารถคาดการณ์ลักษณะการทำงานเมื่อรันโค้ดได้ อีกตัวอย่างหนึ่งคือนิพจน์:u =(u++);

พฤติกรรมที่กำหนดโดยการดำเนินการคือพฤติกรรมที่ไม่ได้ระบุโดยข้อกำหนด และปล่อยให้ผู้ดำเนินการตัดสินใจและจัดทำเอกสารวิธีการเลือก ในกรณีนี้ การเลือกที่ทำไว้ต้องได้รับการประกัน กล่าวคือ เฉพาะสิ่งที่ควรเกิดขึ้นเท่านั้น

ในกรณีที่ไม่ระบุลักษณะการทำงาน มาตรฐาน C++ ให้เส้นทางที่เป็นไปได้หลายเส้นทางโดยไม่จำเป็นต้องใช้งานเพื่อจัดทำเอกสารหรือรับประกันสิ่งใด