ปัญหา
อธิบายโพสต์อาร์เรย์และแนวคิดที่เพิ่มขึ้นล่วงหน้าโดยใช้โปรแกรม C
วิธีแก้ปัญหา
ตัวดำเนินการเพิ่ม (++) -
-
ใช้สำหรับเพิ่มค่าของตัวแปร 1
-
มีตัวดำเนินการเพิ่มสองประเภท - การเพิ่มล่วงหน้าและการเพิ่มภายหลัง
-
ตัวดำเนินการส่วนเพิ่มจะถูกวางก่อนตัวถูกดำเนินการในส่วนเพิ่มล่วงหน้า และค่าจะถูกเพิ่มในครั้งแรก จากนั้นดำเนินการกับค่านั้น
eg: z = ++a; a= a+1 z=a
-
ตัวดำเนินการเพิ่มจะถูกวางไว้หลังตัวถูกดำเนินการในส่วนที่เพิ่มขึ้นภายหลัง และค่าจะเพิ่มขึ้นหลังจากดำเนินการแล้ว
eg: z = a++; z=a a= a+1
ลองพิจารณาตัวอย่างเพื่อเข้าถึงองค์ประกอบเฉพาะในตำแหน่งหน่วยความจำโดยใช้การเพิ่มขึ้นก่อนและหลัง
ประกาศอาร์เรย์ขนาด 5 และทำการกำหนดค่าเริ่มต้นของเวลาคอมไพล์ หลังจากนั้นให้ลองกำหนดค่าที่เพิ่มขึ้นล่วงหน้าให้กับตัวแปร 'a'
a=++arr[1] // arr[1]=arr[1]+1 a=arr[1] b=arr[1]++// b=arr[1] arr[1]+1
ตัวอย่างที่ 1
#include<stdio.h> int main(){ int a, b, c; int arr[5] = {1, 2, 3, 25, 7}; a = ++arr[1]; b = arr[1]++; c = arr[a++]; printf("%d--%d--%d", a, b, c); return 0; }
ผลลัพธ์
4--3--25
คำอธิบาย
here, a = ++arr[1]; i.e a = 3 //arr[2]; b = arr[1]++; i.e b = 3 //arr[2]; c = arr[a++]; i.e c = 25 //arr[4]; printf("%d--%d--%d",a, b, c); printf("%d--%d--%d",4, 3, 25); Thus 4--3--25 is outputted
ตัวอย่างที่ 2
ลองพิจารณาตัวอย่างอื่นเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับอาร์เรย์ก่อนและหลังการเพิ่ม
#include<stdio.h> int main(){ int a, b, c; int arr[5] = {1, 2, 3, 25, 7}; a = ++arr[3]; b = arr[3]++; c = arr[a++]; printf("%d--%d--%d", a, b, c); return 0; }
ผลลัพธ์
27--26—0