Just another WordPress.com site

Operator ใน C++

operator ใน C++ จะมีดังต่อไปนี้

1. +(บวก)

2. -(ลบ)

3. *(คูณ)

4. /(หาร)

5. %(หารเอาเศษ มักจะอ่าน operator นี้ว่า mod)

6. =(assignment operator)

7. ++(increment operator)

8. --(decrement operator)

เริ่มต้นจะขอพูดถึง operator  ข้อ 1 ถึง 6 ก่อนนะครับ

เมื่อมี operator หลายๆตัวปรากฎอยู่ในคำสั่งของเรา C++ จะประมวลโดยให้ลำดับความสำคัญก่อนหลังดังนี้(ลำดับแรกๆ จะโดนคำนวนก่อนลำดับหลังๆ)

1. *, /, %

2. +, –

3. =

โดยการประมวณผลจะเริ่มจากสิ่งที่อยู่ในวงเล็บก่อน และ operator ที่มีความสำคัญเป็นลำดับแรกๆจะถูกประมวลผลก่อน เช่น ถ้าเราสั่ง

3*5+(3-8/4);

3-8/4 จะโดนประมวณผลก่อน

และเนื่องจาก / มีความสำคัญมากกว่า –

ดังนั้นมันจะคำนวน 8/4=2 ก่อน

หลังจากนั้นจะคำนวน 3-2=1

หลังจากนั้นจะคำนวน 3*5+1

เนื่องจาก * มีความสำคัญมากกว่า +

มันจะคำนวณ 3*5=15 ก่อน

หลังจากนั้นจะนำ 15+1=16 ซึ่งจะเป็นผลลัพธ์สุดท้าย

ถ้าหากว่า operator มีลำดับความสำคัญเท่ากันปรากฎในคำสั่ง มันจะประมวณผลจากซ้ายไปขวา เช่น ถ้าเราสั่ง

3*5/(2+4-1)

2+4-1 ซึ่งอยู่ในวงเล็บจะโดนประมวณผลก่อน

เนื่องจาก +, – มีความสำคัญเท่ากัน มันจะประทวณผลจากซ้ายไปขวา กล่าวคือ

เริ่มต้นจะคำนวน 2+4 =6 ก่อน

หลังจากนั้นจะนำ 6-1=5

หลังจากนั้นจะคำนวน 3*5/5

เนื่องจาก *, / มีความสำคัญเท่ากัน มันจะประทวณผลจากซ้ายไปขวา กล่าวคือ

เริ่มต้นจะคำนวน 3*5 =15 ก่อน ซึ่งจะเป็นผลลัพธ์สุดท้าย

หลังจากนั้นจะนำ 15/5=3

สมมติว่าเราสั่ง

int x;

x=5+9/3;

คำสั่งในบรรทัดที่สองมี operator อยู่ 3 ตัวคือ +, /, =

ซึ่งเรียงลำดับความสำคัญก่อนหลังได้เป็น /, +, =

ดังนั้นเริ่มต้นมันจะคำนวน 9/3=3 ก่อน

แล้วนำ 5+3=8

และสุดท้ายจะกำหนดค่าให้ x=8

ส่วน operator ++ กับ -- เป็น operator ที่ใช้เพิ่มค่า และลดค่าของตัวแปรไป 1 ตามลำดับ

โดยลำดับความสำคัญของ operator นี้ ขึ้นกับว่า เราวางมันไว้ข้างหน้าตัวแปร หรือวางไว้ด้านหลังหรือตัวแปร

โดยถ้าวางไว้ด้านหน้า มันจะโดนคำนวนเป็นลำดับแรกเสมอ (คำนวนก่อนค่าในวงเล็บซะอีก)

ถ้าวางไว้ด้านหลัง มันจะโดนคำนวนเป็นลำดับสุดท้ายเสมอ เช่น สมมติว่าเราสั่ง

int x=10;

++x+(5+6);

++x จะโดนคำนวนก่อน โดยเพิ่มค่าของ x จาก 10 กลายเป็น 11

หลังจากนั้นจะคำนวนค่า 11+(5+6) = 22 เป็นคำตอบสุดท้าย

แต่ถ้าเราสั่ง

int x=10;

(5+6)+x++;

เริ่มต้นมันจะคำนวนค่า 5+6+x=5+6+10=21 ก่อน

และสุดท้ายมันจึงจะขยับค่า x เพิ่มไป 1 ซึ่งจะได้ x=11

ถ้าเราสั่ง

int x=7;

int y;

y=++x+(2*3);

เริ่มต้นมันจะมันจะคำนวน ++x ก่อน โดยขยับค่า x จาก 7 กลายเป็น x=8

หลังจากนั้นจะคำนวนค่า 8+(2*3)=14

แล้วสุดท้ายจะกำหนดให้ y=14

แต่ถ้าเราสั่ง

int x=7;

int y;

y=(2*3)+x++;

เริ่มต้นมันจะมันจะคำนวนค่า (2*3)+x=(2*3)+7=13

หลังจากนั้นจะกำหนดค่าให้ y=13

แล้วสุดท้ายจะขยับค่า x จาก 7 กลายเป็น x=8

หมายเหตุ การคำนวนค่าใน C++ นั้น ++x จะคำนวนเร็วกว่า x++ นิดหน่อย

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: