แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างการหล่อประเภทและการแปลงประเภท

คำสองคำว่า "การพิมพ์แบบหล่อ" และ "การแปลงแบบ" เกิดขึ้นเมื่อไม่จำเป็นต้องแปลงชนิดข้อมูลหนึ่งไปเป็นแบบอื่น เมื่อทั้งสองประเภทเข้ากันได้กับแต่ละอื่น ๆ แล้วการแปลงประเภทหนึ่งเป็นประเภทอื่นจะทำโดยอัตโนมัติโดยคอมไพเลอร์ อย่างไรก็ตามมีความแตกต่างพื้นฐานระหว่างการแปลงประเภทและการคัดเลือกประเภทเช่นการแปลงประเภทจะทำ "โดยอัตโนมัติ" โดยคอมไพเลอร์ในขณะที่การหล่อประเภทจะต้อง "ทำอย่างชัดเจน" โดยโปรแกรมเมอร์ เรามาคุยกันถึงความแตกต่างของทั้งการคัดเลือกนักแสดงและการแปลงด้วยความช่วยเหลือของกราฟเปรียบเทียบ

ตารางเปรียบเทียบ:

พื้นฐานสำหรับการเปรียบเทียบประเภทหล่อการแปลงประเภท
ความหมายชนิดข้อมูลหนึ่งถูกกำหนดให้กับอีกประเภทหนึ่งโดยผู้ใช้โดยใช้ตัวดำเนินการส่งสัญญาณแล้วมันถูกเรียกว่า "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' ดังนั้นการขยายประเภทแหล่งที่มาจึงเกิดขึ้น ที่นี่ไม่จำเป็นต้องมีตัวดำเนินการแคสเตอร์เนื่องจากคอมไพเลอร์จะทำอย่างชัดเจน

ความแตกต่างที่สำคัญระหว่างการหล่อประเภทและการแปลง

  1. ความแตกต่างพื้นฐานที่แยกความแตกต่างของการหล่อแบบจากการแปลงประเภทคือการหล่อประเภทนั้นเป็นการแปลงประเภทหนึ่งไปสู่อีกประเภทหนึ่งโดยโปรแกรมเมอร์ ในทางกลับกันการแปลงประเภทคือการแปลงประเภทหนึ่งไปอีกประเภทหนึ่งโดยคอมไพเลอร์ในขณะที่รวบรวม
  2. การหล่อประเภทสามารถนำไปใช้กับประเภทข้อมูลที่อาจไม่เข้ากันได้ แต่การแปลงประเภทสามารถนำไปใช้กับประเภทข้อมูลที่เข้ากันได้เท่านั้น
  3. การแปลงประเภทหนึ่งไปเป็นประเภทอื่นต้องใช้ตัวดำเนินการแคสติ้ง“ ()” ในขณะที่การแปลงประเภทข้อมูลหนึ่งไปเป็นประเภทอื่นในการแปลงประเภทไม่จำเป็นต้องใช้ผู้ดำเนินการใด ๆ
  4. ในขณะที่แปลงชนิดข้อมูลหนึ่งไปเป็นประเภทอื่นในการคัดเลือกประเภทประเภทปลายทางอาจมีขนาดใหญ่กว่าหรือเล็กกว่าประเภทแหล่งที่มา ในทางกลับกันประเภทปลายทางจะต้องมีขนาดใหญ่กว่าประเภทแหล่งที่มาในการแปลงประเภท
  5. การแปลงประเภทหนึ่งไปเป็นอีกประเภทหนึ่งนั้นเกิดขึ้นในขณะที่การเข้ารหัสในการคัดเลือกประเภทในขณะที่ในการแปลงประเภทการแปลงประเภทหนึ่งไปเป็นประเภทอื่นจะทำอย่างชัดเจนในระหว่างการรวบรวม
  6. การคัดเลือกประเภทเรียกว่าการแปลงแบบแคบเนื่องจากที่นี่ประเภทปลายทางสามารถมีขนาดเล็กกว่าประเภทต้นทางในขณะที่การแปลงประเภทเรียกว่าการแปลงแบบขยายเนื่องจากที่นี่ประเภทปลายทางต้องมีขนาดใหญ่กว่าประเภทต้นทาง

สรุป:

สามารถสรุปได้ว่าการแปลงประเภทและการหล่อประเภททั้งสองดำเนินงานการแปลงชนิดข้อมูลหนึ่งไปยังอีกประเภทหนึ่ง แต่แตกต่างกันไปในแง่ที่ว่าการคัดเลือกนักเขียนนั้นกระทำโดยโปรแกรมเมอร์ คอมไพเลอร์และมันไม่ได้ใช้ตัวดำเนินการใด ๆ

Top