ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามเกี่ยวกับภาษา c ครับเกี่ยวกับ ++a และ a++
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามเกี่ยวกับภาษา c ครับเกี่ยวกับ ++a และ a++  (อ่าน 9768 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
nscyber
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 1,165



ดูรายละเอียด
« เมื่อ: 27 กรกฎาคม 2013, 23:15:05 »

เนื่องจากผมสงสัยว่า ตกลง z++ กับ ++z มันไม่ได้คำตอบเดียวกับหรอ z+1

พอดีผมเขียนโค้ดสองแบบ

อันนี้แบบ z++
โค๊ด:
#include <stdio.h>
#include <conio.h>
void main(){
int x=5,y=10,z=2,sum;
clrscr();
sum = x*y%(z++);
printf("a++ is : %d",sum);
getch();
}

อันนี้แบบ ++z
โค๊ด:
#include <stdio.h>
#include <conio.h>
void main(){
int x=5,y=10,z=2,sum;
clrscr();
sum = x*y%(++z);
printf("a++ is : %d",sum);
getch();
}

คำถามคืออันที่มี z++ ได้คำตอบคือ 2 ส่วนที่มีโค้ด ++z ได้ คำตอบคือ 0

คือผมสงสัยตกลง z++ กับ ++z มันไม่ได้เอา zไปบวก 1 หรอครับ คือ z มันไม่ได้เท่ากับ 3 หรอครับในกรณีนี้ ผมงงไปหมดแล้ว

เช่นอันนึงผมตั้ง
a=10
สรุปผมลองเช็ด
++a = 11
a++ = 10

ในหนังสือก้ขึ้นแบบนี้ตกลงารคิดเขาคิดยังไง

พรุ่งนี้สอบแล้วแงๆๆๆๆๆ
« แก้ไขครั้งสุดท้าย: 27 กรกฎาคม 2013, 23:16:01 โดย nscyber » บันทึกการเข้า
silkyland
Newbie
*

พลังน้ำใจ: 12
ออฟไลน์ ออฟไลน์

กระทู้: 84



ดูรายละเอียด
« ตอบ #1 เมื่อ: 27 กรกฎาคม 2013, 23:50:45 »

ถ้า $a = 10;
$a++;
echo $a;

จะได้ 11
---
$b = 10
++$b;
echo $b;

จะได้ 11 เท่ากัน อ้างอิงจาก PHP

++ x   Pre-increment   Increments x by one, then returns x //เพิ่มค่า x ด้วย 1 ก่อนแล้วส่งค่า x
x ++   Post-increment   Returns x, then increments x by one //ส่งค่า x ก่อนแล้วเพิ่มค่า x ด้วย 1

ถ้าเป็นอย่างนี้จะเข้าใจมากขึ้น

$a = 10;
echo $a++;
ตอบ 10 //เพราะค่ายังไม่เพิ่มในบรรทัด $a++

$b = 10;
echo ++b;
ตอบ 11 
« แก้ไขครั้งสุดท้าย: 27 กรกฎาคม 2013, 23:57:13 โดย silkyland » บันทึกการเข้า

*Image Removed*
ohmohm
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 170
ออฟไลน์ ออฟไลน์

กระทู้: 3,098



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 27 กรกฎาคม 2013, 23:58:43 »

a++ หมายถึงทำอะไรบางอย่างกับ a ก่อน แล้วจึง ++
++a หมายถึงให้ ++ กับ a ก่อนแล้วค่อยใช้ค่า a
เช่น
char * a = "BCD";
char a1;
char a2;
a1 = *a++; // a1 จะได้อักษร B และ pointer a เลื่อนไป 1
a2 = *++a // a2 จะเลื่อนตำแหน่ง pointer ไปอีก 1 แล้วจึงอ้างค่า จึงได้ D

คงเป็นประโยชน์กับการสอบนะครับ
บันทึกการเข้า
dekmv
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 3,264



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 27 กรกฎาคม 2013, 23:59:32 »

++a บวกก่อนแล้วค่อยทำ
a++ ทำก่อนแล้วค่อยบวก

ครับ  wanwan017
บันทึกการเข้า
teerdear1
Newbie
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 85



ดูรายละเอียด
« ตอบ #4 เมื่อ: 28 กรกฎาคม 2013, 00:00:29 »

คือ a++ กับ ++a มันไม่เหมือนกันนะครับ
ถ้าทดลองแบบนี้

int a = 10;
a++;
printf("a is : %d",a);
-----------------------------
int a = 10;
a++;
printf("a is : %d",a);

มันก็จะได้ผลลัพธ์ไม่ต่างกันครับ
คุณต้องลองแบบนี้ครับ

int a = 10;
printf("a is : %d",a++);
-----------------------------
int a = 10;
printf("a is : %d",++a);

ด้านบนจะได้ = 10
ด้านล่างจะได้ = 11

a++ แบบนี้มันจะยังไม่บวกค่าเพิ่มจนกว่าจะผ่านการทำงานนี้ไปครับ
แต่ถ้า ++a มันจะเพิ่มค่าทันที

ผิดถูกประการใดขออภัยด้วยคับ ไม่ได้เขียนภาษา C นานมากแล้ว -__-
บันทึกการเข้า
nscyber
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 1,165



ดูรายละเอียด
« ตอบ #5 เมื่อ: 28 กรกฎาคม 2013, 21:31:44 »

ขอบคุณทุกท่านมากนะครับ +1 ให้แล้ว ^__^
บันทึกการเข้า
goodwide
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 66
ออฟไลน์ ออฟไลน์

กระทู้: 1,432



ดูรายละเอียด
« ตอบ #6 เมื่อ: 28 กรกฎาคม 2013, 21:53:37 »

 :wanw
ฟามรู้
บันทึกการเข้า
seowizard
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 102
ออฟไลน์ ออฟไลน์

กระทู้: 1,119



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 28 กรกฎาคม 2013, 23:42:14 »

++a บวกก่อนแล้วค่อยทำ
a++ ทำก่อนแล้วค่อยบวก

ครับ  wanwan017

ถูกครับ

ถ้า a=0;
++a บวกก่อนแล้วค่อยทำ = 1
a++ ทำก่อนแล้วค่อยบวก = 0
บันทึกการเข้า
seowizard
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 102
ออฟไลน์ ออฟไลน์

กระทู้: 1,119



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 28 กรกฎาคม 2013, 23:51:39 »

++a บวกก่อนแล้วค่อยทำ
a++ ทำก่อนแล้วค่อยบวก

ครับ  wanwan017

ถูกครับ

ถ้า a=0;
++a บวกก่อนแล้วค่อยทำ = 1
a++ ทำก่อนแล้วค่อยบวก = 0


เสริมอีกนิดนะครับ  ++a กับ a++ จะมีค่าเท่ากันก็ต่อเมื่อเราสั่ง printf("%d",a); หลังสิ้นสุดคำสั่งหรือ line of code นั้น เช่น

a=0;
++a;//หรือ a++
printf("%d",a);
คำตอบ คือ 1 เหมือนกัน
บันทึกการเข้า
zatoli30
สมุนแก๊งเสียว
*

พลังน้ำใจ: 268
ออฟไลน์ ออฟไลน์

กระทู้: 967



ดูรายละเอียด
« ตอบ #9 เมื่อ: 29 กรกฎาคม 2013, 00:16:54 »

ฟื้นความทรงจำ หุหุ
บันทึกการเข้า

รับเขียนสคริปเก็บข้อมูลสินค้า ตามสั่ง Nordstrom,6pm,Zappos,Homedepot,etc...  สอบถาม
หน้า: [1]   ขึ้นบน
พิมพ์