C (ภาษาโปรแกรม): อะไรคือความแตกต่างระหว่าง: ++ a และ a = a + 1?


ตอบ 1:

ไม่มีความแตกต่าง ++ a, a + = 1 และ a = a + 1 เป็นนิพจน์ที่เหมือนกันทุกประการโดยความหมาย (ความหมายสเป็กภาษากำหนดไว้ด้วยวิธีนี้)

ในทั้งสามกรณีผลลัพธ์ของนิพจน์คือสำเนาของค่าที่จะเขียนลงใน "a" (a ++ คือแน่นอนแตกต่างกันในผลลัพธ์นั้นคือสำเนาของค่าที่อ่านจาก "a")

ความแตกต่างเพียงอย่างเดียวคือถ้า "a" เป็นนิพจน์ที่ซับซ้อนกว่าเช่นการเรียกใช้ฟังก์ชันมันจะถูกเรียกสองครั้งใน "a = a + 1" และลำดับความสำคัญของการมอบหมายนั้นต่ำกว่า ++ มากดังนั้นการใช้ บางครั้งการกำหนดแทน ++ บางครั้งต้องใช้วงเล็บพิเศษ: ++ a + ++ b นั้นง่ายต่อการเขียนมากกว่า (a + = 1) + (b + = 1) หรือ (a = a + 1) + (b = b + 1)


ตอบ 2:

++ a และ a 1 คล้ายกัน แต่ปัญหาเกิดขึ้นเมื่อคุณใช้ตัวแปรมากกว่าหนึ่งตัว

ตัวอย่าง:

int a = 10, b;

++ a => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11)

a ++ => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11))

b = a ++ => ก่อนกำหนดค่า a ให้กับ a แล้วเพิ่มทีละ 0ne (o / p: a = 11, b = 10)

b = ++ a => ค่าแรก a เพิ่มขึ้นทีละหนึ่งจากนั้นกำหนดให้กับ b (o / p: a = 11, b = 11)


ตอบ 3:

++ a และ a 1 คล้ายกัน แต่ปัญหาเกิดขึ้นเมื่อคุณใช้ตัวแปรมากกว่าหนึ่งตัว

ตัวอย่าง:

int a = 10, b;

++ a => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11)

a ++ => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11))

b = a ++ => ก่อนกำหนดค่า a ให้กับ a แล้วเพิ่มทีละ 0ne (o / p: a = 11, b = 10)

b = ++ a => ค่าแรก a เพิ่มขึ้นทีละหนึ่งจากนั้นกำหนดให้กับ b (o / p: a = 11, b = 11)


ตอบ 4:

++ a และ a 1 คล้ายกัน แต่ปัญหาเกิดขึ้นเมื่อคุณใช้ตัวแปรมากกว่าหนึ่งตัว

ตัวอย่าง:

int a = 10, b;

++ a => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11)

a ++ => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11))

b = a ++ => ก่อนกำหนดค่า a ให้กับ a แล้วเพิ่มทีละ 0ne (o / p: a = 11, b = 10)

b = ++ a => ค่าแรก a เพิ่มขึ้นทีละหนึ่งจากนั้นกำหนดให้กับ b (o / p: a = 11, b = 11)


ตอบ 5:

++ a และ a 1 คล้ายกัน แต่ปัญหาเกิดขึ้นเมื่อคุณใช้ตัวแปรมากกว่าหนึ่งตัว

ตัวอย่าง:

int a = 10, b;

++ a => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11)

a ++ => เพิ่มค่า a โดยหนึ่ง (o / p: a = 11))

b = a ++ => ก่อนกำหนดค่า a ให้กับ a แล้วเพิ่มทีละ 0ne (o / p: a = 11, b = 10)

b = ++ a => ค่าแรก a เพิ่มขึ้นทีละหนึ่งจากนั้นกำหนดให้กับ b (o / p: a = 11, b = 11)