
ตารางเปรียบเทียบ:
พื้นฐานสำหรับการเปรียบเทียบ | ประเภทหล่อ | การแปลงประเภท |
---|---|---|
ความหมาย | ชนิดข้อมูลหนึ่งถูกกำหนดให้กับอีกประเภทหนึ่งโดยผู้ใช้โดยใช้ตัวดำเนินการส่งสัญญาณแล้วมันถูกเรียกว่า "Type Casting" | การแปลงชนิดข้อมูลหนึ่งเป็นประเภทอื่นโดยอัตโนมัติโดยคอมไพเลอร์เรียกว่า "การแปลงประเภท" |
ประยุกต์ | การหล่อประเภทยังสามารถนำไปใช้กับชนิดข้อมูล 'ไม่เข้ากัน' สองประเภท | การแปลงประเภทสามารถทำได้เมื่อประเภทข้อมูลสองประเภทนั้นเป็น 'ที่เข้ากันได้' |
ผู้ประกอบการ | สำหรับการหล่อชนิดข้อมูลไปยังอีกประเภทหนึ่งจำเป็นต้องใช้โอเปอเรเตอร์ '()' | ไม่ต้องใช้ตัวดำเนินการ |
ขนาดของประเภทข้อมูล | ประเภทปลายทางอาจเล็กกว่าประเภทต้นทาง | ที่นี่ประเภทปลายทางจะต้องมีขนาดใหญ่กว่าประเภทแหล่งที่มา |
การดำเนินการ | มันทำในระหว่างการออกแบบโปรแกรม | มันทำอย่างชัดเจนในขณะที่รวบรวม |
ประเภทการแปลง | การแปลงให้แคบลง | การแปลงแบบขยาย |
ตัวอย่าง | int a; ไบต์ b; ... ... b = (ไบต์) a; | int a = 3; ลอยข; ข = a; // ค่าเป็น b = 3.000 |
ความหมายของการหล่อประเภท
การกำหนดประเภทการพิมพ์สามารถกำหนดได้คือการเลือกชนิดข้อมูลหนึ่งเป็นประเภทข้อมูลอื่นโดยโปรแกรมเมอร์ในเวลาที่ออกแบบโปรแกรม เป็นการแปลงข้อมูลประเภทหนึ่งไปสู่อีกประเภทหนึ่งโดยอัตโนมัติไม่สามารถทำได้ตลอดเวลา อาจเป็นเงื่อนไขที่ 'ประเภทปลายทาง' มีขนาดเล็กกว่า 'ประเภทแหล่งที่มา' ดังนั้นโปรแกรมเมอร์จะต้องแปลงชนิดข้อมูลที่มีขนาดใหญ่ขึ้นเป็นประเภทข้อมูลที่มีขนาดเล็กลงอย่างชัดเจนโดยใช้ตัวดำเนินการแคสติ้ง '()' เนื่องจากชนิดข้อมูลที่มีขนาดใหญ่กว่าถูกมอดูเลตเป็นชนิดข้อมูลขนาดเล็กกว่าจึงเรียกว่า 'การแปลงที่แคบลง'

destination_type = (target_type) ตัวแปร / value // target เป็นชนิดที่คุณต้องการแปลงประเภทแหล่งที่มาซึ่งเป็นประเภทปลายทางเสมอ
ลองมาทำความเข้าใจกับตัวอย่าง คุณต้องการแปลงชนิดข้อมูล 'int' เป็น 'ไบต์' ตอนนี้เนื่องจาก 'ไบต์' มีขนาดเล็กกว่า 'int' ไม่อนุญาตให้ทำการแปลงประเภท ที่นี่เราต้องแปลง 'int' เป็น 'byte' โดยนัยโดยใช้ตัวดำเนินการแคสติ้ง '()' เนื่องจาก 'int' ใหญ่กว่า 'ไบต์' ขนาดของ 'int' จะลดลงเป็นช่วง "int mod byte"
int a; ไบต์ b; ... ... b = (ไบต์) a;
เมื่อ 'float' ถูกแปลงเป็น 'int' ขนาดของ float จะถูกตัดทอนเนื่องจาก 'int' ไม่เก็บค่าเศษส่วน หากขนาดของประเภทปลายทางมีขนาดเล็กเกินไปสำหรับประเภทแหล่งที่มาให้พอดีประเภทของแหล่งที่มาคือ 'ช่วง' ของปลายทางประเภทโมดูโล การร่ายสามารถใช้เมื่อชนิดข้อมูลเข้ากันได้เป็นวิธีปฏิบัติที่ดีในการใช้การคัดเลือกชนิดเมื่อต้องการแปลงชนิด
คำจำกัดความของการแปลงประเภท
การแปลงประเภทเป็นการแปลงอัตโนมัติของประเภทข้อมูลหนึ่งไปยังอีกประเภทหนึ่งเมื่อใดก็ตามที่จำเป็นโดยคอมไพเลอร์ทำอย่างชัดเจน แต่มีสองเงื่อนไขที่ต้องทำให้พอใจก่อนการแปลงประเภท
- ประเภทต้นทางและปลายทางจะต้องใช้งานร่วมกันได้
- ประเภทปลายทางต้องใหญ่กว่าประเภทต้นทาง
เงื่อนไขสองข้อนี้ควรตอบสนองเพื่อให้เกิดการแปลงประเภทและการแปลงแบบนี้เรียกว่า 'การแปลงแบบขยาย' เนื่องจากประเภทที่เล็กกว่าจะถูกแปลงเป็นประเภทที่มีขนาดใหญ่ขึ้น สำหรับการแปลงแบบขยายนี้ประเภทตัวเลขเป็น 'int', 'float' เข้ากันได้ขณะที่ตัวเลขเป็นถ่านและบูลีนหรือถ่านกับบูลีนก็ไม่เข้ากัน

ตัวอย่างนี้จะให้มุมมองที่ดีขึ้นของสิ่งนี้
int a = 3; ลอยข; ข = a; // ค่าเป็น b = 3.000
ที่นี่ 'int' ถูกแปลงเป็น 'float' ซึ่งมีขนาดใหญ่กว่า 'int' ดังนั้นการขยายประเภทแหล่งที่มาจึงเกิดขึ้น ที่นี่ไม่จำเป็นต้องมีตัวดำเนินการแคสเตอร์เนื่องจากคอมไพเลอร์จะทำอย่างชัดเจน
ความแตกต่างที่สำคัญระหว่างการหล่อประเภทและการแปลง
- ความแตกต่างพื้นฐานที่แยกความแตกต่างของการหล่อแบบจากการแปลงประเภทคือการหล่อประเภทนั้นเป็นการแปลงประเภทหนึ่งไปสู่อีกประเภทหนึ่งโดยโปรแกรมเมอร์ ในทางกลับกันการแปลงประเภทคือการแปลงประเภทหนึ่งไปอีกประเภทหนึ่งโดยคอมไพเลอร์ในขณะที่รวบรวม
- การหล่อประเภทสามารถนำไปใช้กับประเภทข้อมูลที่อาจไม่เข้ากันได้ แต่การแปลงประเภทสามารถนำไปใช้กับประเภทข้อมูลที่เข้ากันได้เท่านั้น
- การแปลงประเภทหนึ่งไปเป็นประเภทอื่นต้องใช้ตัวดำเนินการแคสติ้ง“ ()” ในขณะที่การแปลงประเภทข้อมูลหนึ่งไปเป็นประเภทอื่นในการแปลงประเภทไม่จำเป็นต้องใช้ผู้ดำเนินการใด ๆ
- ในขณะที่แปลงชนิดข้อมูลหนึ่งไปเป็นประเภทอื่นในการคัดเลือกประเภทประเภทปลายทางอาจมีขนาดใหญ่กว่าหรือเล็กกว่าประเภทแหล่งที่มา ในทางกลับกันประเภทปลายทางจะต้องมีขนาดใหญ่กว่าประเภทแหล่งที่มาในการแปลงประเภท
- การแปลงประเภทหนึ่งไปเป็นอีกประเภทหนึ่งนั้นเกิดขึ้นในขณะที่การเข้ารหัสในการคัดเลือกประเภทในขณะที่ในการแปลงประเภทการแปลงประเภทหนึ่งไปเป็นประเภทอื่นจะทำอย่างชัดเจนในระหว่างการรวบรวม
- การคัดเลือกประเภทเรียกว่าการแปลงแบบแคบเนื่องจากที่นี่ประเภทปลายทางสามารถมีขนาดเล็กกว่าประเภทต้นทางในขณะที่การแปลงประเภทเรียกว่าการแปลงแบบขยายเนื่องจากที่นี่ประเภทปลายทางต้องมีขนาดใหญ่กว่าประเภทต้นทาง
สรุป:
สามารถสรุปได้ว่าการแปลงประเภทและการหล่อประเภททั้งสองดำเนินงานการแปลงชนิดข้อมูลหนึ่งไปยังอีกประเภทหนึ่ง แต่แตกต่างกันไปในแง่ที่ว่าการคัดเลือกนักเขียนนั้นกระทำโดยโปรแกรมเมอร์ คอมไพเลอร์และมันไม่ได้ใช้ตัวดำเนินการใด ๆ