3.ประเภทของข้อมูลและตัวดำเนินการ
-
Upload
mansuang1978 -
Category
Education
-
view
2.388 -
download
1
Transcript of 3.ประเภทของข้อมูลและตัวดำเนินการ
ประเภทของขอมู�ลและตั�วดำ��เนิ�นิก�ร
Data Types and Operator
ใช้สำ��หร�บ Turbo C++ Version 3.0
ประเภทของขอมู�ลประเภทของขอมู�ลขอมู�ลในิภ�ษ�ซี� แบ!งไดำเป#นิ 4 กล$!มู
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type) ขอมู�ลประเภทแถวอ�กขระ (String Type)
ขอมู�ลช้นิ�ดำโครงสำร�ง (Structure Type)
ขอมู�ลช้นิ�ดำศรช้�* (Pointer Type)
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)
ขอมู�ลประเภทล��ดำ�บ (Ordinal Type) ขอมู�ลจำ��นิวนิเตั,มู ขอมู�ลอ�กขระ ขอมู�ลตัรรกะ
ขอมู�ลประเภทจำ��นิวนิจำร�ง (Real Type)
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)
ขอมู�ลประเภทล��ดำ�บ (Ordinal Type) ขอมู�ลจำ��นิวนิเตั,มูช้นิ�ดำ ตั�วอย่!�ง
integer ...,-3,-2,-1,0,1,2,3,...
binary 0 , 1
Octal 0124 , 076 , 04
hexadecimal 0x17, 0xd ,0x5f
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)• ขอมู�ลจำ��นิวนิเตั,มู
ช้นิ�ดำขอมู�ล ช้!วงของขอมู�ลท�-เก,บไวint -32768...32767
unsigned int 0...65535
signed int -32768...32767
short int -32768...32767
unsigned short int 0...65535
signed short int -32768...32767
long int -2,147,483,648...2,147,483,647
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)
ขอมู�ลประเภทล��ดำ�บ (Ordinal Type) ขอมู�ลอ�กขระ (Character Data Type) ขอมู�ลประเภทนิ�*จำะเป#นิตั�วอ�กขระหนิ.-งตั�ว ซี.-งเป#นิไป
ตั�มู ตั�ร�งรห�สำ ASCII ไดำแก! ตั�วอ�กษร ตั�วเลข อ�กขระ
พิ�เศษช้นิ�ดำขอมู�ล ตั�วอย่!�ง
char 'C' , 'a' , '\n' , '#' , '@'
'{' , '0' , '$'
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)
ขอมู�ลประเภทล��ดำ�บ (Ordinal Type) ขอมู�ลตัรรกะ (Boolean Data Type)
จำะเป#นิค!�ท�งลอจำ�ก
ช้นิ�ดำ ตั�วอย่!�งboolean 1 , 0 , -4
ค!�เท,จำ (False) แทนิค!�ดำวย่เลข 0 ค!�จำร�ง (True) แทนิค!�ดำวย่เลข 1 - ค!�จำร�ง ค0อ ค!�ท�-ไมู!เท!�ก�บ 0
ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ ขอมู�ลช้นิ�ดำอย่!�งง!�ย่ (Simple Type)(Simple Type)
ขอมู�ลประเภทจำ��นิวนิจำร�ง (Real Data Type)ไมู!เป#นิขอมู�ลช้นิ�ดำล��ดำ�บ เนิ0-องจำ�กทศนิ�ย่มูมู�ไดำหล�ย่ตั��แหนิ!ง
ช้นิ�ดำ ตั�วอย่!�ง ช้!วงของขอมู�ลท�-เก,บไว
float 11.25, -1.5E4, 2.5e-02 3.4E-38...3.4E+38
double 11.25, -1.5E4, 2.5e-02 1.7E-308...1.7E+308
long double 11.25, -1.5E4, 2.5e-02 3.4E-4932... 1.1E+4932
ขอมู�ลประเภทแถวอ�กขระ ขอมู�ลประเภทแถวอ�กขระ (String Type)(String Type)
เป#นิก�รนิ��ตั�วอ�กขระมู�เร�ย่งตั!อก�นิเป#นิขอคว�มูตั�*งแตั!หนิ.-งตั�วเป#นิตันิไป สำ�มู�รถเก,บตั�วอ�กขระไดำ 255 ตั�ว โดำย่ตั�วอ�กขระจำะตัองอย่�!ในิเคร0-องหมู�ย่ “ ” ภ�ษ�ซี� มู�ก�รเตั�มูตั�วอ�กษรว!�ง Null ( \0 ) เป#นิตั�วสำ$ดำท�ย่ของสำตัร�ง
Example
'C' 'O' 'M' 'P' 'U' 'T' 'E' 'R' '\O'
ใช้เนิ0*อท�-ในิก�รเก,บท�*งสำ�*นิ 9 Bytes
ค!�คงท�- (Constant) หมู�ย่ถ.ง ค!�ในิหนิ!วย่คว�มูจำ��ท�-มู�ค!�คงท�-ตัลอดำ
โปรแกรมู ก�รประก�ศค!�คงท�- ท��ไดำ 2 ล�กษณะ ค0อ
ประก�ศ ใหค!�คงท�- ช้0-อว!� a เป#นิช้นิ�ดำ Integer
Const int a ;ประก�ศ ใหค!�คงท�- ช้0-อว!� b เป#นิช้นิ�ดำ Integer เก,บค!� 12 ไว
Const int b = 12 ;
ก�รประก�ศค!�คงท�-และตั�วแปรก�รประก�ศค!�คงท�-และตั�วแปร
ตั�วแปร (Variables) หมายถึ�ง ค่าในหนวยค่วามจำ�าที่��สามารถึเปลี่��ยน
ค่าได้� ชื่��อตั�วแปรจำะเป"นตั�าแหนงหนวยค่วามจำ�าที่��เก็$บ
ข้�อม'ลี่อย' ก็ารประก็าศตั�วแปรสามารถึที่�าได้�ด้�งน�)
ตั�วอย่!�งเช้!นิ
Type Variables_list
int count;
float data1 , data2;
ก�รประก�ศค!�คงท�-และตั�วแปรก�รประก�ศค!�คงท�-และตั�วแปร
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 11#include <stdio.h>
const int taxrate = 7;
float itemcost , salestax;
void main(void)
{
printf("Please Enter Cost of item : ");
scanf("%f" , &itemcost); salestax = (taxrate * itemcost) / 100;
printf(" item Cost is = %.2f \n" , itemcost);
printf(" Sales tax is %.2f\n" , salestax); return;
} OutputPlease Enter Cost of item : 500
ผลก�รท��ง�นิ ?
OutputPlease Enter Cost of item : 500item Cost is = 500.00Sales tax is 35.00
ตั�วดำ��เนิ�นิก�ร ตั�วดำ��เนิ�นิก�ร (Operator)(Operator)
ภ�ษ�ซี�มู�ตั�วดำ��เนิ�นิก�ร ดำ�งตั!อไปนิ�* ตั�วดำ��เนิ�นิก�รเลขคณ�ตั (Arithematic Operator)
ตั�วดำ��เนิ�นิก�รลอจำ�ก (Logic Operator)
ตั�วดำ��เนิ�นิก�รเปร�ย่บเท�ย่บ (Relation Operator)
ตั�วดำ��เนิ�นิก�รเลขคณ�ตั ตั�วดำ��เนิ�นิก�รเลขคณ�ตั(Arithematic Operator)(Arithematic Operator)
operatorคว�มูหมู�ย่
ช้นิ�ดำของขอมู�ล ตั�วอย่!�ง
+ บวก ตั�มูช้นิ�ดำของขอมู�ล 5 + 2
- ลบ ตั�มูช้นิ�ดำของขอมู�ล 5 - 2
* ค�ณ ตั�มูช้นิ�ดำของขอมู�ล 5 * 2
/ ห�ร ตั�มูช้นิ�ดำของขอมู�ล 5 / 2
%
ห�รเอ�ผลล�พิธ์4เฉพิ�ะเศษของก�รห�ร( Modulo )
จำ��นิวนิเตั,มู 5%2
++ก�รเพิ�-มูค!�ข.*นิหนิ.-ง จำ��นิวนิเตั,มู X++, ++X
-- ก�รลดำค!�ลงหนิ.-ง จำ��นิวนิเตั,มู X-- , --X
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 22
ค!�ตั�ว แปร x
ค!�ตั�ว แปร y
ก�รดำ��เนิ�นิ
ก�ร
ค!�จำ�กก�รกระ
ท��
ผลล�พิธ์4ท�-เก,บ
10 5 x = y + 2 7 X = 7
10 5 x = x/y 2 X = 2
10.0 5 x = x/y 2.0 X = 2.0
9 2 x = x%y 1 X = 1
14 -3 x = x%y 2 X = 2
-14 3 x = x%y -2 X = -2
ก�รดำ��เนิ�นิก�ร ผลล�พิธ์4
ช้นิ�ดำผลล�พิธ์4
13 / 5 * 3 6จำ��นิวนิเตั,
มู
6 * 5 / 10 * 2 + 10 16จำ��นิวนิเตั,
มู
(6 * 5) / (10 * 2) + 10 11จำ��นิวนิเตั,
มู
(6 * 5.0) / (10 * 2 + 10) 1.0จำ��นิวนิจำร�
ง
(6 * 5.0) / (10 * (2 + 10)) 0.25จำ��นิวนิจำร�
ง
3 * (4 % (6 / 2)) + 5 8จำ��นิวนิเตั,
มู
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 33
ค!�ตั�วแปรx
ก�รดำ��เนิ�นิก�ร ค!�จำ�กก�รกระท��
7 x = x+1 8
7 x = x-1 6
7 x = x++ 8
7 x = ++x 8
7 x = x-- 6
7 x = --x 6
7 Y = ++x Y มู�ค!�เป#นิ 8
7 Y = x++ Y มู�ค!�เป#นิ 7
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 44
จำ�กตั�วอย่!�งท�- จำ�กตั�วอย่!�งท�- 44 ถ� x มู�ค!�เป#นิ 7
y = + + x แลว
อธ์�บ�ย่ไดำว!� x มู�ค!�เป#นิ 7 ตั!อ มู� เพิ�-มูค!� x ข.*นิหนิ.-ง
แลวสำ!งใหตั�วแปร y ท��ให y มู�ค!�เป#นิ 8 ถ� x มู�ค!�เป#นิ 7 y = x + + แลว
อธ์�บ�ย่ไดำว!� x มู�ค!�เป#นิ 7 ท��ให y มู�ค!�เป#นิ 7 ดำวย่
และเพิ�-มูค!� x ข.*นิหนิ.-ง สำ!งผลให x มู�ค!�เป#นิ 8
สำร$ปไดำว!� - ถ�ว�งตั�วดำ��เนิ�นิ
ก�รไวหนิ�ตั�วแปรจำะท��ก�รเพิ�-มูค!�ก!อนิแลวจำ.งสำ!งค!�ให
ก�บ y
- ถ�ว�งตั�วดำ��เนิ�นิ ก�รไวหล�งตั�วแปร
จำะท��ก�รสำ!งค!�ใหก�บy ก!อนิแลวจำ.งเพิ�-มู
ค!� x อ�กหนิ.-ง
ตั�วดำ��เนิ�นิก�รเปร�ย่บเท�ย่บ ตั�วดำ��เนิ�นิก�รเปร�ย่บเท�ย่บ(Relation Operator)(Relation Operator)
operatorคว�มูหมู�ย่
ช้นิ�ดำของขอมู�ล
ตั�วอย่!�ง
ผลล�พิธ์4
< นิอย่กว!� boolean 5 < 4 0
<=นิอย่กว!�หร0อ
เท!�ก�บ boolean 5 <= 5 1
== เท!�ก�บ boolean 0 == 0 1
> มู�กกว!� boolean 5 > 4 1
>=มู�กกว!�หร0อ
เท!�ก�บ boolean 5 >= 4 1
!= ไมู!เท!�ก�บ boolean 0 != 0 0
ตั�วดำ��เนิ�นิก�รลอจำ�ก ตั�วดำ��เนิ�นิก�รลอจำ�ก (Logic (Logic Operator)Operator)
operatorคว�มูหมู�ย่
ช้นิ�ดำของขอมู�ล
ตั�วอย่!�ง
ผลล�พิธ์4
&& AND boolean 1 && -1 1
|| OR boolean 1 || 0 1
! NOT boolean !4 0
A B A && B
1
1
0
0
1
0
1
0
1
0
0
0
A B A || B
1
1
0
0
1
0
1
0
1
1
1
0
A !A
1
0
0
1
ตั�ร�งค!�คว�มูจำร�ง AND
ตั�ร�งค!�คว�มูจำร�ง OR
ตั�ร�งค!�คว�มูจำร�ง NOT
#include <stdio.h>void main(){ int A , B; printf(" A B A OR B\n"); A = 1; B = 1; printf("| %d | %d | %d |\n", A, B, A||B); A = 1; B = 0; printf("| %d | %d | %d |\n", A, B, A||B); A = 0; B = 1; printf("| %d | %d | %d |\n", A, B, A||B); A = 0; B = 0; printf("| %d | %d | %d |\n", A, B, A||B);}
A B A OR B| 1 | 1 | 1 || 1 | 0 | 1 || 0 | 1 | 1 || 0 | 0 | 0 |
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 55
ผลก�รท��ง�นิ ?
ก�รย่$บนิ�พิจำนิ4โดำย่ใช้ ก�รย่$บนิ�พิจำนิ4โดำย่ใช้(Compound (Compound Assignment)Assignment)
นิ�พิจำนิ4 ตั�วดำ��เนิ�นิก�รท�-ย่$บแลว
x = x + y x += y
x = x - y x -= y
x = x * y x *= y
x = x / y x /= y
x = x % y x %= y
z = (x+1) + (y+1) z = ++x + ++y
ขนิ�ดำของหนิ!วย่คว�มูจำ��ของขอมู�ลขนิ�ดำของหนิ!วย่คว�มูจำ��ของขอมู�ลเร�ย่งจำ�กนิอย่ไปมู�กเร�ย่งจำ�กนิอย่ไปมู�ก
char
short
int
unsigned int
long int
unsigned long int
float
double
long double
ก�รเปล�-ย่นิประเภทของขอมู�ลก�รเปล�-ย่นิประเภทของขอมู�ลx y นิ�พิจำนิ4 zint int z = x + y int
float float z = x + y float
int float z = x + y float
int double z = x * y double
char float z = x + y float
short long z = (x + y) / 4.6 long then float
ผลี่ลี่�พธ์-จำะเก็$บในข้�อม'ลี่ประเภที่ที่��ใหญ่ก็วาเสมอ
ก�รเปล�-ย่นิประเภทของขอมู�ลก�รเปล�-ย่นิประเภทของขอมู�ล
ภ�ษ�ซี�สำ�มู�รถเปล�-ย่นิประเภทของขอมู�ลใหเป#นิไปตั�มูท�-ผ�ใช้ตัองก�รไดำ โดำย่ก�รนิ��ช้นิ�ดำขอมู�ลไวหนิ�ขอมู�ลเช้!นิx นิ�พิจำนิ4 ผลล�พิธ์4
int float x float
float (int)(x + 2.5 ) int
int (float)( x +1) float
#include <stdio.h>void main(){ int i , j; scanf("%d %d" , &i , &j ); printf(" i < j: %d\n" , i<j ); printf(" i <= j: %d\n" , i<=j ); printf(" i == j: %d\n" , i==j ); printf(" i > j: %d\n" , i>j ); printf(" i >= j: %d\n" , i>=j ); return;}
ผลก�รท��ง�นิ
6 -1
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 66
16 i < j: i <= j: i == j: i > j: i >= j:
6 -1 i < j: 0 i <= j: 0 i == j: 0 i > j: 1 i >= j: 1
16 i < j: 1 i <= j: 1 i == j: 0 i > j: 0 i >= j: 0
#include <stdio.h>void main(){ int i , j; scanf("%d %d" , &i , &j ); printf(" i && j: %d\n" , i && j ); printf(" i || j : %d\n" , i || j ); printf(" !i : %d\n" , !i ); printf(" !j : %d\n" , !j ) ; return;}
ผลก�รท��ง�นิ
0 -2
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 77
2-1 i && j: i || j : !i : !j :
0 -2 i && j: 0 i || j : 1 !i : 1 !j : 0
2-1 i && j: 1 i || j : 1 !i : 0 !j : 0
ล��ดำ�บก�รดำ��เนิ�นิง�นิของ ล��ดำ�บก�รดำ��เนิ�นิง�นิของOperator Operator
1. ()
2. ! (Not) , ++ , -- , -
3. * , / , %
4. + , -
5. < , > , <= , >=
6. == , !=
7. && (And)
8. || (Or)
9. = , *= , /= , %= , += , -=,
ในิกรณ�อย่�!ในิล��ดำ�บเดำ�ย่วก�นิจำะท��จำ�กซี�ย่ไปขว�
วงเล,บตั�ดำลบ
#include <stdio.h>void main(){ int i , j; printf("2+3 && 1 : %d\n" , 2+3 && 1); printf("2+3 && 0 : %d\n" , 2+3 && 0); printf("-3 < 1 && 1 : %d\n" , -3 < 1 && 1); printf("12/3*5 > 10 < 5: %d\n" , 12/3*5 > 10 < 5); return;}
2+3 && 1 : 2+3 && 0 : -3 < 1 && 1 : 12/3*5 > 10 < 5:
ตั�วอย่!�งท�- ตั�วอย่!�งท�- 88
ผลก�รท��ง�นิ ?
2+3 && 1 : 12+3 && 0 : 0-3 < 1 && 1 : 112/3*5 > 10 < 5: 1
จำบประเภที่ข้องข้�อม'ลี่แลี่ะตั�วด้�าเน0นก็าร
Data Types and Operator
Question ?