สื่อการสอนวีดีโอ

วิดีโอสอน
สร้างเว็บเพจ

วีดีโอการเขียน
โปรแกรมด้วยภาษาC

วีดีโอสอน
การใช้งาน
photochop

องค์ประกอบพื้นฐานของการเขียนโปรแกรมภาษา C
                อักขระ(characters)     ค่าคงที่(constants)  ตัวแปร(variables)  ตัวดำเนินการ(operators)  นิพจน์(expressions)
Characters แบ่งเป็น
ตัวเลข (digits) คือ ตัวเลข 0 ถึง 9 และเลขฐานสิบหก คือ A B C D E และ F
ตัวอักษร(letters) คือตัวอักษรในภาษาอังกฤษ เป็นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก คือ A-Z และ a-z
อักขระพิเศษ(special characters) คือ ! * + " < # ( = | > % ) ~ : / ^ - [ ;  ? , & _ ]  ' .  space ในภาษาซี ถือว่า เครื่องหมายขีดเส้นใต้เป็นตัวอักษร ตัวหนึ่ง characters ต่าง ๆ นี้จะใช้เป็นค่าคงที่ ตัวแปร ตัวดำเนินการ

Constants เป็นค่าที่มีค่าไม่เปลี่ยนแปลง แบ่งเป็น
ค่าคงที่ประเภทเลขจำนวนเต็ม (integer constant) คือเลขจำนวนเต็ม ที่อยู่ระหว่าง -32768 ถึง 32767 เช่น -25 หรือ 0 หรือ 236 ค่าเหล่านี้แต่ละค่าใช้หน่วยความจำในการเก็บ 2 ไบต์ ค่าเหล่านี้เขียนในรูปเลขฐานสิบ ฐานแปด(เขียนโดยใช้เลขศูนย์นำหน้า เช่น 045) เลขฐานสิบหก(เขียนโดย ใช้เลขศูนย์และx นำหน้า เช่น 0x28  0X2AF)
ค่าคงที่ชนิดตัวเลขทศนิยม(floating point constants) เป็นตัวเลขทศนิยม เช่น 1.0 1.6 E+09 ค่านี้ใช้หน่วยความจำในการเก็บค่าละ 4 ไบต์ และมีค่าอยู่ในช่วง 1.2 E -38 ถึง 3.4E+38  โดย 3 ไบต์แรกเก็บค่าตัวทศนิยม ส่วนไบต์สุดท้ายเก็บเลขยกกำลัง
ค่าคงที่ชนิดตัวเลขทศนิยมความละเอียดสองเท่า (double floating point) เรียกสั้น ๆ ว่า double เก็บจำนวน 2.2E-308 ถึง 1.8E+308 เท่านั้น ใช้หน่วยความจำ 8 ไบต์ 7 ไบต์แรกเก็บเลขทศนิยม ไบต์สุดท้ายเก็บเลขยกกำลัง
ค่าคงที่ชนิดตัวอักขระ (single character constant)  เก็บตัวอักขระ 1 ตัว โดยใช้เครื่องหมาย ' และ ' ล้อม 1 ตัวอักขระใช้ 1 ไบต์ เช่น 'E' 'X'
ค่าคงที่ชนิดข้อความ (string constant) ใช้เก็บข้อความ มีความยาวตั้งแต่ 1 ตัวอักขระ เก็บในรูปอาร์เรย์ แต่ละตัวใช้หน่วยความจำ 1 ไบต์ เรียงต่อกันโดยไบต์สุดท้ายจะต้องเก็บ \0 (null charactor) เพื่อบอกว่าจบข้อความแล้ว เช่น "Bodindecha" ใช้หน่วยความจำ 11ไบต์


ตัวแปร(variables)

                เป็นชื่อที่ตั้งเพื่อใช้อ้างอิงถึงข้อมูลต่าง ๆ โดยตัวแปรจะมีการใช้เนื้อที่ในหน่วยความจำในปริมาณที่ต่างกันขึ้นกับชนิดของข้อมูล  ข้อมูล พื้นฐานในภาษาซี มี 5 ชนิด คือ อักขระ (char)  จำนวนเต็ม(int) จำนวนจริง(float)  จำนวนจริงละเอียด2เท่า(double)  ไม่ให้ค่าใด ๆ (void)   นอกจากนี้เพื่อความสามารถในการใช้งานจึงมีการเพิ่มชนิดของตัวแปรขึ้นมาดังตาราง

ตารางแสดงชนิดของตัวแปร


คำประกาศชนิดของตัวแปร

เครื่องหมาย

จำนวนไบต์ที่ใช้

ค่าที่เป็นไปได้

char

คิดเครื่องหมาย

1

-128 ถึง 128

int

คิดเครื่องหมาย

2

-32768 ถึง 32767

short

คิดเครื่องหมาย

2

-32768 ถึง 32767

long

คิดเครื่องหมาย

4

-2147483648 ถึง 2147483647

unsigned char

ไม่คิดเครื่องหมาย

1

0  ถึง 255

unsigned int

ไม่คิดเครื่องหมาย

2

0 ถึง 65535

unsigned short

ไม่คิดเครื่องหมาย

2

0 ถึง 65535

unsigned long

ไม่คิดเครื่องหมาย

4

0 ถึง 4294967295

float

คิดเครื่องหมาย

4

3.4E-38 ถึง 3.4E+38

double

คิดเครื่องหมาย

8

1.7E-308 ถึง 1.7E+308

long double

คิดเครื่องหมาย

10

3.4E-4932 ถึง 1.1E+4932

การตั้งชื่อตัวแปร
1. ต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย underscore เท่านั้น
2.  ตัวต่อไปจะเป็นตัวเลขหรือตัวอักษรหรือเครื่องหมาย underscore
3. ชื่อมีความยาวไม่จำกัด (ตั้งยาวเกินได้ แต่ compiler จำแนกได้เพียง 31 ตัวแรกเท่านั้น ตั้งเกินจึงไม่มีประโยชน์)
4.ห้ามตั้งชื่อตรงกับคำสงวนในภาษาซี ซึ่งมี 33 คำ ดังนี้
asm   auto  break  case  char const continue default  do double else enum extern float for goto if  int  long  register  return  short  signed  sizeof  static   struct  switch  typedef  union  unsigned  void  volatile  while
5. ชื่อตัวแปรควรสื่อความหมายของตัวแปรเพื่อป้องกันความสับสนของการพิจารณาโปรแกรม


การประกาศตัวแปร

ในการจะใช้งานตัวแปรจะต้องมีการประกาศชนิดและชื่อของตัวแปรนั้นก่อน โดยการประกาศตัวแปรใช้รูปแบบ คือ 
ชนิดของตัวแปร  ชื่อตัวแปร
โดยถ้ามีตัวแปรชนิดเดียวอาจประกาศพร้อมกันโดยใช้ คอมมา คั่นระหว่างชื่อของตัวแปร ถ้ามีการกำหนดค่าให้ใช้เครื่องหมาย = และใช้เครื่องหมายแสดงการจบคำสั่งเมื่อสิ้นสุด คำสั่ง  ตัวอย่าง เช่น
char name, day = 'S' , surname[20] ="Kodedee";
int  x=5 ,y,z[100];       float  a=5.00 ,b,c;       double  k=1.234567, m ;

การประกาศค่าคงที่(หรือตัวคงที่)   

                ค่าคงที่มีลักษณะทำนองเดียวกับตัวแปร แต่เป็นตัวแปรที่มีค่าไม่เปลี่ยนแปลง การประกาศทำได้ 2 แบบ คือใช่คำสั่ง const    ดังนี้
const   ชนิดของข้อมูล   ชื่อตัวแปร = ค่าของตัวแปร;
เช่น
const  int  num1 = 5;
const  float vat =  0.07;
const  char student[10] = ‘Bush’;
ใช้  directive  #define (เคยอธิบายมาแล้ว) ดังนี้
#define ชื่อตัวคงที่  ค่าคงที่
เช่น                      
#define  NUM1  5
#define VAT 0.07
#define STUDENT Bush
โปรแกรม MinGW ได้กำหนดค่าคงที่มาให้ไว้ด้วย โดยค่าคงที่ที่เป็นจำนวนเต็มจะเก็บไว้ใน header file คือ limits.h ส่วนจำนวนจริงจะอยู่ใน float.h ดังตัวอย่างในโปรแกรม con_max_min.c ที่แสดงไว้


/* con_max_min.c  */
#include <stdio.h>
#include <limits.h>
main()
{
printf("\n\tConstants names\tValue\n");
printf("\n\tCHAR_BIT   \t%d",CHAR_BIT);
printf("\n\tCHAR_MAX   \t%d",CHAR_MAX);
printf("\n\tCHAR_MIN   \t%d",CHAR_MIN);
printf("\n\tSCHAR_MAX  \t%d",SCHAR_MAX);
printf("\n\tSCHAR_MIN  \t%d",SCHAR_MIN);
printf("\n\tINT_MAX    \t%d",INT_MAX);
printf("\n\tINT_MIN    \t%d",INT_MIN);
printf("\n\tLONG_MAX   \t%ld",LONG_MAX);
printf("\n\tLONG_MIN   \t%ld",LONG_MIN);
printf("\n\tSHRT_MAX   \t%hd",SHRT_MAX);
printf("\n\tSHRT_MIN   \t%hd",SHRT_MIN);
printf("\n\tUCHAR_MAX  \t%u",UCHAR_MAX);
printf("\n\tUINT_MAX   \t%u",UINT_MAX);
printf("\n\tULONG_MAX  \t%lu",ULONG_MAX);
printf("\n\tUSHRT_MAX  \t%hu",USHRT_MAX);
getch();
}
เมือโปรแกรมทำงานจะได้ผลดังรูป

ตัวดำเนินการ(operator)

ตัวดำเนินการมีหลายประเภทลักษณะการดำเนินการแตกต่างกันไป ในที่นี้จะกล่าวถึงบางประเภทเท่านั้น

ตัวดำเนินการทางคณิตศาสตร์ (mathematical operators)


สัญลักษณ์

การดำเนินการ

ตัวอย่าง

+

การบวก

2+5 ผลลัพธ์ 7

-

การลบ

7-4 ผลลัพธ์ 3

*

การคูณ

2*6 ผลลัพธ์ 12

/

การหาร

8/2 ผลลัพธ์ 4

%

การหารหาเศษ

9%4 ผลลัพธ์ 1

ตัวดำเนินการความสัมพันธ์หรือการเปรียบเทียบ (relational operators)


สัญลักษณ์

การดำเนินการ

ตัวอย่าง

น้อยกว่า

2<3 ผลลัพธ์ จริง(1)

มากกว่า

2>3 ผลลัพธ์ เท็จ(false)(0)

<=

น้อยกว่าหรือเท่ากับ

2<= 3 ผลลัพธ์ จริง(true)

>=

มากกว่าหรือเท่ากับ

2>= 3 ผลลัพธ์ เท็จ(false)

==

เท่ากับ

4==4 ผลลัพธ์ จริง(true)

!=

ไม่เท่ากับ

2!= 2 ผลลัพธ์ เท็จ(false)

ตัวดำเนินการตรรกะ (logical operators)


สัญลักษณ์

การดำเนินการ

ตัวอย่าง

&&

และ(AND)

(2<3)&&(3>1) ผลลัพธ์ จริง

||

หรือ(OR)

(2>3)||(4<1) ผลลัพธ์ เท็จ(false)

!

ไม่(NOT)

!(2> 3) ผลลัพธ์ จริง(true)


ตัวดำเนินการกำหนดค่า (assignment operators)


สัญลักษณ์

การดำเนินการ

ตัวอย่าง

=

กำหนดค่า(assignment)

a=2 ความหมายคือ กำหนดให้a มีค่าเป็น2

+=

การบวก(addition)

a+=b ความหมายคือ(a=a+b)

*=

การคูณ(multiplication)

a*=b ความหมายคือ(a=a*b)

-=

การลบ(subtraction)

a-=b ความหมายคือ(a=a-b)

/=

การหาร(division)

a/=b ความหมายคือ(a=a/b)

%=

การหารหาเศษ(remainder)

a%=b ความหมายคือ(a=a%b)

++

เพิ่มค่า(increment)

a++  หรือ ++a ความหมายคือ a=a+1

--

ลดค่า(decrement)

a--  หรือ --a ความหมายคือ a=a-1

                ลำดับการดำเนินการของตัวดำเนินการ (operator precedence)


ลำดับที่

ตัวดำเนินการ

ลักษณะการทำงาน

1

( )     [ ]    .    ->

ซ้าย ไป ขวา

2

-    ~   |   *   &

ขวา ไป ซ้าย

3

++     --

ขวา ไป ซ้าย

4

*    /    %

ซ้าย ไป ขวา

5

+     -

ซ้าย ไป ขวา

6

<<      >>

ซ้าย ไป ขวา

7

<   >    <=    >=

ซ้าย ไป ขวา

8

==         !=

ซ้าย ไป ขวา

9

&(bitwise AND)

ซ้าย ไป ขวา

10

^(bitwise XOR)

ซ้าย ไป ขวา

11

|(bitwise OR)

ซ้าย ไป ขวา

12

&&

ซ้าย ไป ขวา

13

||

ซ้าย ไป ขวา

14

?:

ซ้าย ไป ขวา

15

=    +=    -=    /=     %=

ขวา ไป ซ้าย

16

<<=    >>=

ขวา ไป ซ้าย

โดยตัวดำเนินการที่มีลำดับน้อยกว่าจะดำเนินก่อนตัวดำเนินการที่มีลำดับสูงกว่า เช่น
X =  2 + 5 * 3 จะมีลำดับการดำเนินการ คือ 
ลำดับที่ 1        5 * 3       (เพราะ  * มีลำดับเป็น 4  ส่วน + อยู่ลำดับ 5)
ลำดับที่ 2      2 + 15
ลำดับที่ 3   17 เป็นค่าของ X   
นิพจน์ (expression)

                  เกิดจากการนำ ค่าคงที่ หรือ ตัวแปร และตัวดำเนินการมาประกอบกัน  โดยนิพจน์มีหลายชนิด เช่นนิพจน์ทางคณิตศาสตร์ นิพจน์ทางตรรกะ นิพจน์ทางการเปรียบเทียบ นิพจน์เกี่ยวกับเงือนไข นิพจน์เกี่ยวกับข้อความ เช่น
2 + x * 5
เป็นตัวอย่างของนิพจน์ทางคณิตศาสตร์  (2>3)&&(5>=4) เป็นนิพจน์ทางตรรกะและการเปรียบเทียบ !(a) เป็นนิพจน์ทางตรรกะ  if(x==y) เป็นนิพจน์เงื่อนไข

                ตัวอย่าง การหาผลลัพธ์ของนิพจน์
กำหนด    int a = 10 , b = 12, c =3; จงหาผลลัพธ์ของ  2 * a  + b % c  ดำเนินการดังนี้ (2 * a) + (b %c) ผลลัพธ์ คือ 20 + 0 คือ 20
จากข้อกำหนดด้านบน จงหาผลลัพธ์ ของ (a>b)&&(c<=b) ซึ่งเราอาจพิจารณา ดังนี้
(เท็จ)&& (จริง)  ดังนั้น ผลลัพธ์ คือ เท็จ
จากความรู้ที่เรียนมาในใบความรู้ที่ 1 และ 2 ควรจะเขียนโปรแกรมเป็นภาษาซีได้บ้างแล้ว


ตัวอย่าง 2.1  กำหนดให้ x y  z เป็นจำนวนเต็ม จงเขียนโปรแกรม หา ค่า ของ z ที่มีความสัมพันธ์กับ x y เป็นสมการทางคณิตศาสตร์ ดังนี้  z =  5x + 10y   โดย x มีค่าเป็น 6 ส่วน y มีค่า 7 และแสดงผลลัพธ์ทางจอภาพ
โปรแกรม อาจเป็นทำนองนี้
/* program  example2_1_1.c */
#include <stdio.h>
int x = 6,y=7,z;       /* declare variable */
main()
{
z =  (5 * x) +( 10 * y);        /* compute value of z */
printf("value of x = %d  \t value of y = %d  \t value of z = %d",x,y,z);
getch();           /*  wait for keyboard  pressing */
}

หรือ

/* program example2_1_2.c */
#include <stdio.h>
int x = 6,y=7,z;
main()
{
printf("value of x = %d  \t value of y = %d  \t value of z = %d",x,y,5*x+10*y);
getch();        /*  wait for keyboard pressing */
}

โปรแกรม example2_1_1.c กับ example2_1_2.c จะให้ผลที่แสดงออกเหมือนกัน ต่างกันที่ขั้นตอนการดำเนินการ example2_1_1.c มีการประกาศตัวแปรที่ใช้ทั่วไปตลอดโปรแกรม และมีการคำนวณ ค่า z เก็บไว้ในหน่วยความจำก่อน จึงแสดงผลลัพธ์   ส่วนโปรแกรม example2_1_2.c ประกาศตัวแปรที่ใช้ได้เฉพาะในฟังก์ชัน main() เท่านั้น และไม่มีการคำนวณหาค่า z แต่คำนวณแล้วแสดงผลลัพธ์ออกทางจอภาพเลยโดยไม่มีการเก็บค่าที่คำนวณได้ไว้ในตัวแปร z


ตัวอย่างที่2.2 จาก ขั้นตอนวิธีหรือรหัสจำลอง ต่อไปนี้
เริ่มต้น
กำหนดค่าความยาวฐาน = 5                                                                                 
กำหนดค่าความสูง = 4
คำนวณพื้นที่ = 0.5 x ความยาวของฐาน x ความสูง
พิมพ์หัวรายงาน
พิมพ์ความยาวของฐาน
พิมพ์ความสูง
พิมพ์พื้นที่
จบ
จงเขียนโปรแกรมที่ทำงานตามขั้นตอนวิธี ดังกล่าว
จากขั้นตอนวิธี ดังกล่าว อาจเขียนโปรแกรมได้ ดังโปรแกรม example2_2.c ดังนี้
/* program example2_2.c  */
#include <stdio.h> 
int lengt , high ;
float area;
main()
{                                                                                         /* begin the program  */
lengt = 5;                                                                      /* assign the length of triangle */
high = 4;                                                                        /* assign the height of triangle */
area = 0.5 * lengt * high ;                                              /* compute the area of triangle */
printf("\tDetermination of triangle area\n");                 /* print report title */
printf("\tThe length of triangle =  %d\n ",lengt);             /* print length  */
printf("\tThe height of triangle =  %d\n ",high);              /* print height */
printf("\tThe area of triangle   =  %.2f\n",area);              /* print area */
getch();                                                                            /* wait for keyboard pressing  */
}                                                                                              /* end program */
ผลการทำงานของโปรแกรมนี้ จะลักษณะ ดังรูป

ตัวอย่าง2.3 จงเขียนโปรแกรมหา พื้นที่วงกลมที่มีรัศมี 2.00 หน่วย
วิธีการ เนื่องจากขั้นตอนการทำงานไม่ยุ่งยากและคิดว่านักเรียนคงสามารถสร้างขั้นตอนในสมองได้ จึงไม่เขียนรหัสลำลองก่อน โปรแกรมอาจเขียนได้ ดัง โปรแกรม example2_3.c ดังนี้
/* program 2_3.c */
#include <stdio.h>
#define pi 3.14
float radius,area;
main()
     {
                 radius = 2.00;
                 area = pi * radius * radius;
                 printf("\tArea of circle\n ");
                 printf("\tRadius = %.2f \n",radius);
                printf("\tArea   = %.2f \n",area);
                getch();
        }


ตัวอย่าง 2.4 การหารจำนวนเต็มและการหาจำนวนจริง ให้นักเรียนศึกษาการทำงานของโปรแกรม example2_4.c ซึ่งมคำสั่ง ดังนี้
/*  program example2_4.c  */
#include <stdio.h>
main()
{
int x,y;
float a,b,c,d;
x = 5;
y = 2;
a = 5;
b = 2;
c = 5.0;
d = 2.0;
printf("\n\tInteger division\n");
printf("\t x/y = %d \n\t  y/x = %d \n",x/y,y/x);
printf("\t 5/2 = %d \n\t  2/5 = %d \n",5/2,2/5);
printf("\n\tFloating point division\n");
printf("\t a/b = %f \n\t  b/a = %f \n",a/b,b/a);
printf("\t c/d = %f \n\t  d/c = %f \n",c/d,d/c);
printf("\t 5/2 = %f \n\t  2/5 = %f \n" ,5/2 , 2/5);
printf("\t 5./2. = %f \n\t  2./5. = %f \n",5./2.,2./5.);
printf("\t 5.0/2.0 = %f \n\t  2.0/5.0 = %f \n",5.0/2.0,2.0/5.0);
getch();  
}

เมื่อโปรแกรมทำงานจะได้ผลลัพธ์ดังรูป

ตัวดำเนินการเอกภาค  (unary operator)

คือ ตัวดำเนินการที่ดำเนินกับตัวแปรตัวเดียว เช่น ++x หรือ ++x หรือ –y หรือ y— ซึ่งมีลักษณะการใช้ 2 แบบ คือ ตัวดำเนินการเอกภาคเติมหน้า( prefix mode ) เช่น ++x  หรือ – y  ตัวดำเนินการแบบนี้จะทำงานก่อนที่จะทำตามคำสั่งอื่น  กับ ตัวดำเนินการเอกภาคเติมหลัง (postfix mode) เช่น x++ หรือ y-- ตัวดำเนินการแบบนี้จะทำงานหลังจากที่ทำคำสั่งอื่น แล้ว


ตัวอย่าง2.5 โปรแกรม example2_5.c แสดงการใช้ตัวดำเนินการเอกภาคทำงานร่วมกับการทำงานอื่น ๆในคำสั่งเดียวกัน
/* program example2_5.c */      
#include <stdio.h>
main()
{   int a,b;
a = b = 0;
printf("\n\ta\tb");
printf("\n\t%d\t%d",a++,++b);     /* จะมีการพิมพ์ค่า  a เป็น 0 ก่อนเพิ่มค่า a เป็น 1  ส่วน b จะเพิ่มค่าเป็น 1 ก่อนพิมพ์ค่า */
printf("\n\t%d\t%d",a++,++b);     /* จะมีการพิมพ์ค่า  a เป็น 1 ก่อนเพิ่มค่า a เป็น 2  ส่วน b จะเพิ่มค่าเป็น 2 ก่อนพิมพ์ค่า */
b = a++ ;          /* กำหนด ค่า b ให้มีค่า เท่ากับ a คือ 2 แล้วเพิ่มค่า a อีก 1 เป็น 3
printf("\n");
printf("\n\t%d\t%d",a,b);      /* พิมพ์ a คือ 3 และ b คือ 2  */
b = ++a ;   /* เพิ่มค่า a อีก 1 เป็น 4 แล้วให้เป็นค่าของ b ดังนั้น b มีค่าเป็น 4 */
printf("\n");
printf("\n\t%d\t%d",a,++b);     / พิมพ์ค่า a  คือ 4 และ เพิ่มค่า b อีก 1 เป็น 5 แล้วจึงพิมพ์ ค่า b คือ 5  
b = b + ++a ;   /* เพิ่มค่า a อีก 1 เป็น 5 แล้วนำไปบวก กับ b เดิมคือ 5 ทำให้ b มีค่าเป็น 10 */
printf("\n");
printf("\n");
printf("\n\t%d\t%d",a,b);   /* พิมพ์ค่า a คือ 5 ส่วน  b คือ 10  
b = a-- - a ;   /* นำค่า a คือ 5 ลบกัน ได้ 0 ทำให้ b มีค่าเป็น 0 แล้วลดค่า a อีก 1 ทำให้ a มีค่าเป็น 4  */
printf("\n");   
printf("\n\t%d\t%d",a,b);   /* พิมพ์ ค่า a คือ 4 และ b คือ 0
b = ++a - a ;     */  เพิ่มค่า a จาก 4 เป็น 5 แล้วลบกัน เป็น ค่า b ทำให้ b มีค่าเป็น 0 */ 
printf("\n");
printf("\n\t%d\t%d",a,b);   /* พิมพ์ค่า a คือ 5 ส่วน b คือ 0  */
b = a - --a ;      /*  ลดค่า a ลง 1 ทำให้ a มีค่า เป็น 4 แล้วนำมาลบกันเป็นค่าของ b ทำให้ b มีค่าเป็น 0 */
printf("\n");
printf("\n\t%d\t%d",a,b);    /* พิมพ์ ค่า a คือ 4 ส่วน b คือ 0  */
b = --a - --a ;    /* ลดค่า a ครั้งละ 1 จำนวน 2 ครั้ง  ทำให้ a เป็น 2  ส่วน b เป็น 0 */
printf("\n");
printf("\n\t%d\t%d",a,b);  
b = a++ + ++a ;   /*  เพิ่มค่า a จาก 2 เป็น 3 บวกกันทำให้ b เป็น 6 แล้วเพิ่มค่า a อีก 1 เป็น 4
printf("\n");
printf("\n\t%d\t%d",a,b);  
getch();     }

ผลการทำงานของโปรแกรมเป็นดังรูป

การแปลงชนิดของข้อมูล
              การเปลี่ยนชนิดของข้อมูล ทำได้หลายวิธีขึ้นกับชนิดของข้อมูล วิธีการที่จะกล่าวถึง คือ กำหนดชนิดหน้าข้อมูล มีรูปแบบคือ
ตัวแปร   =  (ชนิดข้อมูล) นิพจน์;

ดังตัวอย่าง ในโปรแกรม example2_6.c


ตัวอย่างที่ 2.6 โปรแกรม example2_6.c  แสดงตัวอย่างการเปลี่ยนชนิดของข้อมูล
/* program example2_6.c   */
#include <stdio.h>
main()
{
int a,b;
a =  2.7 + 3.9 ;    /* บวกก่อน ได้ 6.5 แต่เนื่องจาก a เป็น int จึงตัดทศนิยมทิ้งได้ a เป็น 6  */
printf("\n\ta = %d ",a);
b = (int) 2.7 + (int) 3.9 ;  /* เปลี่ยน 2.7 เป็น int ได้ 2 และเปลี่ยน 3.9 เป็น int ได้ 3 บวกกันได้ 5  */
printf("\n\tb = %d ",b);
int num1 =5 , num2 =4;
float x,y;
x = num1/num2;         /* ผลหารได้ 1.25 แต่ทั้ง num1 และ num2 เป็น int จึงตัดเศษทิ้ง แล้วจึงกำหนดค่าให้ x จึงมีค่าเป็น 1 แต่ x เป็น float จึงมีทศนิยม  */
printf("\n\tx = %f",x);      /* พิมพ์ x เป็นแบบ %f ถ้าไม่ระบุตำแหน่งจะให้ 6 ตำแหน่งจึงเป็น 1.000000 */
y = (float)num1/num2;    /* เปลี่ยน num1 เป็น float ก่อน แล้วจึงหาร จึงได้ผลลัพธ์เป็น 1.25  */
printf("\n\ty = %f",y);    /* พิมพ์แบบ float จึงได้ผลลัพธ์เป็น 1.250000
getch();
}
ผลการทำงานของโปรแกรมได้เป็น
a  =  6
b  =  5
x  =  1.000000
y  =   1.250000

                กรณีที่นิพจน์นั้นประกอบด้วยข้อมูลหลายชนิด จะมีการเปลี่ยนเป็นข้อมูลชนิดเดียวกันก่อน จึงดำเนินการอื่นต่อ โดยการเปลี่ยนจะเปลี่ยนจากข้อมูลที่เล็กกว่าเป็นข้อมูลชนิดที่ใหญ่กว่า เช่นข้อมูลชนิด int มีการดำเนินการกับข้อมูลชนิด float จะมีการเปลี่ยนข้อมูลชนิด int เป็น float ก่อน จึงดำเนินการอื่นต่อไป

Free Web Hosting