ฉันเจอประสบการณ์แปลก ๆ ในการเขียนโปรแกรม C พิจารณารหัสนี้:
int main(){
int array1[6] = {0, 1, 2, 3, 4, 5};
int array2[6] = {6, 7, 8, 9, 10, 11};
printf("%d\n", array1[-1]);
return 0;
}
เมื่อฉันรวบรวมและเรียกใช้สิ่งนี้ฉันจะไม่ได้รับข้อผิดพลาดหรือคำเตือนใด ๆ ดังที่วิทยากรของฉันกล่าวว่าดัชนีอาร์เรย์-1
เข้าถึงตัวแปรอื่น ฉันยังสับสนอยู่ทำไมภาษาโปรแกรมโลกถึงมีความสามารถนี้ ฉันหมายความว่าทำไมอนุญาตให้ดัชนีอาเรย์เชิงลบ
-1
ของ subarray เป็นวิธีที่ถูกต้องสมบูรณ์ในการอ้างถึงองค์ประกอบก่อนอาร์เรย์ในอาร์เรย์ขนาดใหญ่ อีกอย่างคือถ้าดัชนีไม่ถูกต้องโปรแกรมนั้นไม่ถูกต้อง แต่ในการใช้งานส่วนใหญ่คุณจะได้รับพฤติกรรมที่ไม่ดีเงียบไม่ใช่ข้อผิดพลาดนอกช่วง