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