Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ประเภท cast ใน C / C ++ คืออะไร


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

(type_name) expression

พิจารณาตัวอย่างต่อไปนี้ที่ตัวดำเนินการ cast ทำให้เกิดการแบ่งตัวแปรจำนวนเต็มตัวหนึ่งกับตัวแปรอื่นเพื่อดำเนินการเป็นการดำเนินการแบบทศนิยม -

ตัวอย่าง

#include <stdio.h>
main() {
   int sum = 17, count = 5;
   double mean;
   mean = (double) sum / count;
   printf("Value of mean : %f\n", mean );
}

เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ -

Value of mean : 3.400000

ควรสังเกตว่าตัวดำเนินการ cast มีความสำคัญเหนือการหาร ดังนั้นค่าของผลรวมจะถูกแปลงเป็นประเภท double ก่อน และสุดท้ายจะถูกหารด้วยจำนวนที่ได้ double ค่า

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

โปรโมชั่นจำนวนเต็ม

การเลื่อนระดับจำนวนเต็มเป็นกระบวนการที่ค่าของประเภทจำนวนเต็ม "เล็ก" กว่า int หรือ int ที่ไม่ได้ลงนามจะถูกแปลงเป็น int หรือ ไม่ได้ลงชื่อ . พิจารณาตัวอย่างการเพิ่มอักขระด้วยจำนวนเต็ม −

ตัวอย่าง

#include <stdio.h>
main() {
   int i = 17;
   char c = 'c'; /* ascii value is 99 */
   int sum;
   sum = i + c;
   printf("Value of sum : %d\n", sum );
}

เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ -

Value of sum : 116

ในที่นี้ ค่าของผลรวมคือ 116 เนื่องจากคอมไพเลอร์ทำการเลื่อนระดับจำนวนเต็มและแปลงค่าของ 'c' เป็น ASCII ก่อนดำเนินการบวกจริง

การแปลงเลขคณิตปกติ

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

ประเภท cast ใน C / C ++ คืออะไร

การแปลงเลขคณิตปกติจะไม่ถูกดำเนินการสำหรับตัวดำเนินการกำหนด หรือสำหรับตัวดำเนินการทางตรรกะ &&และ || ให้เรายกตัวอย่างต่อไปนี้เพื่อทำความเข้าใจแนวคิด -

ตัวอย่าง

#include <stdio.h>
main() {
   int i = 17;
   char c = 'c'; /* ascii value is 99 */
   float sum;
   sum = i + c;
   printf("Value of sum : %f\n", sum );
}

ผลลัพธ์

Value of sum : 116.000000

ในที่นี้ เข้าใจได้ง่ายว่า c ตัวแรกจะถูกแปลงเป็นจำนวนเต็ม แต่เนื่องจากค่าสุดท้ายเป็นสองเท่า การแปลงเลขคณิตปกติจะใช้ และคอมไพเลอร์แปลง i และ c เป็น 'float' และเพิ่มผลลัพธ์เป็น 'float'