เฉลยแบบฝึกทักษะที่ 4.3

ตัวดำเนินการและนิพจน์

 

1. จงหาผลลัพธ์ของโปรแกรม

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

11:

12:

13:

 

#include <stdio.h>

main(){

     int  a=9, b=6, c=0;

     c = (a++) + (++b);

     printf(“%d %d %d\n”, a, b, c);

     c = (--a) – (--b);

     printf(“%d %d %d\n”, a, b, c);

     c = ++a;

     c = c – b--;

     c = c + --a;

     c = c - ++b;

     printf(“%d %d %d\n”, a, b, c);

}

 

คำตอบ

10

7

16

 

9

6

3

 

9

6

7

          c = (a++) + (++b) มีค่าเท่ากับ c = 9 + 7 = 16 และหลังทำ a++ แล้ว a = 10 และหลังทำ ++b แล้ว b=7

          c = (--a)-(--b) มีค่าเท่ากับ c=9-6 = 3 และหลังทำ --a แล้ว a = 9 และหลังทำ --b แล้ว b=6 (สังเกตว่าค่าของตัวแปร a และ b มีผลต่อเนื่องมาจากการทำงานด้านบน คือ หลังจากทำงานด้วยคำสั่ง c =(a++) + (++b) แล้ว a = 10, b = 7 และ c = 16 ดังนั้นข้อนี้ a, b, c จึงมีค่าตามนี้ ไม่ใช่ a = 9, b = 6 และ c = 0 ดังที่ได้กำหนดไว้ตอนต้นของโปรแกรม)

          c = ++a; หลังทำคำสั่งนี้จะได้ค่า c = 10 และ ค่า a = 10 (เป็นผลมาจาก ++a)

          c = c - b--; หลังทำคำสั่งนี้จะได้ค่า c = 10-6=4 และ ค่า b = 5 (เป็นผลมาจาก b--)

          c = c+--a; หลังทำคำสั่งนี้จะได้ค่า c = 4+9=13 และ ค่า a = 9 (เป็นผลมาจาก --a)

          c = c-++b; หลังทำคำสั่งนี้จะได้ค่า c = 13-6=7 และ ค่า b = 6 (เป็นผลมาจาก ++b)

          ดังนั้น ขณะนี้ a=9, b=6, c=7

 

2. จงหาผลลัพธ์ของนิพจน์ต่อไปนี้

          2.1     -5 + 4 * (20 % 6)

          2.2     (-5 * (192 / 3) + 7) – 4 % 10 * 2

 

คำตอบ

          2.1 ตอบ 3

                   ขั้นตอน คือ -5+4*(2)

                                   -5+8 = 3

          2.2 ตอบ  -321

                   ขั้นตอน คือ (-5*(64)+7)-4%10*2

                                   (-320+7)-4%10*2

                                   (-313)-4%10*2

                                   -313-4*2                   บรรทัดนี้ทำ  4%10 ได้เศษ 4

                                   -313-8 = -321