0Pricing
C Academy · บทเรียน

การแปลงโดยนัย

การเลื่อนชนิดโดยอัตโนมัติ

การแปลงโดยนัย เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน

การแปลงคืออะไร

เมื่อภาษา C รวมค่าที่มีชนิดแตกต่างกัน ภาษา C จะแปลงชนิดหนึ่งเป็นอีกชนิดหนึ่งโดยอัตโนมัติ การทำเช่นนี้เรียกว่า การแปลงโดยปริยาย

#include <stdio.h>
int main(void) {
    int i = 5;
    double d = i;
    printf("d = %.1f\n", d);
    return 0;
}

การเลื่อนชนิดจำนวนเต็มขึ้น

ชนิดจำนวนเต็มขนาดเล็กอย่าง char และ short จะถูกเลื่อนเป็น int ก่อนการคำนวณ

#include <stdio.h>
int main(void) {
    char a = 10, b = 20;
    int sum = a + b;
    printf("sum = %d\n", sum);
    return 0;
}

การแปลงทางคณิตศาสตร์ตามปกติ

ในนิพจน์ผสม ตัวถูกดำเนินการที่มีชนิดแคบกว่าจะถูกแปลงเป็นชนิดที่กว้างกว่า เพื่อให้ทั้งสองมีชนิดตรงกันก่อนดำเนินการ

#include <stdio.h>
int main(void) {
    int i = 3;
    double d = 2.0;
    printf("%.1f\n", i + d);
    return 0;
}

จาก int เป็น double

เมื่อกำหนดค่า int ให้กับ double ค่าจะถูกขยายอย่างปลอดภัยโดยยังคงค่าเดิมไว้อย่างแม่นยำ

#include <stdio.h>
int main(void) {
    int count = 7;
    double avg = count;
    printf("avg = %.1f\n", avg);
    return 0;
}

จาก double เป็น int จะตัดเศษทิ้ง

การกำหนดค่า double ให้กับ int จะตัดส่วนทศนิยมทิ้ง โดยไม่มีการปัดเศษ

#include <stdio.h>
int main(void) {
    double d = 9.99;
    int n = d;
    printf("n = %d\n", n);
    return 0;
}

char และ int

char เก็บจำนวนเต็มขนาดเล็ก ซึ่งเป็นรหัสอักขระของมัน และสามารถแปลงเป็น int ได้โดยธรรมชาติ

#include <stdio.h>
int main(void) {
    char c = 'A';
    int code = c;
    printf("code = %d\n", code);
    return 0;
}

การแปลงขณะกำหนดค่า

ด้านขวาจะถูกแปลงเป็นชนิดของด้านซ้ายในระหว่างการกำหนดค่า

#include <stdio.h>
int main(void) {
    double pi = 3;
    printf("pi = %.1f\n", pi);
    return 0;
}

ความประหลาดใจจากการหารแบบผสม

5 / 2 เป็นการหารจำนวนเต็ม ซึ่งได้ 2 หากต้องการหารจริง ให้เปลี่ยนตัวถูกดำเนินการตัวใดตัวหนึ่งเป็น double

#include <stdio.h>
int main(void) {
    printf("%.1f\n", 5 / 2.0);
    return 0;
}

การแปลงลักษณะเดียวกับบูลีน

ในเงื่อนไข ค่าที่ไม่ใช่ศูนย์จะถูกแปลงเป็นจริง ส่วนศูนย์จะถูกแปลงเป็นเท็จ

#include <stdio.h>
int main(void) {
    int x = 3;
    if (x)
        printf("nonzero is true\n");
    return 0;
}

การแปลงค่าที่ส่งกลับ

ค่าที่ส่งกลับจะถูกแปลงเป็นชนิดค่าที่ฟังก์ชันประกาศว่าจะส่งกลับ หากส่งค่า double จากฟังก์ชันชนิด int ค่าจะถูกตัดเศษ

#include <stdio.h>
int half(int n) {
    return n / 2;
}
int main(void) {
    printf("%d\n", half(7));
    return 0;
}

การส่งอาร์กิวเมนต์

อาร์กิวเมนต์จะถูกแปลงเป็นชนิดของพารามิเตอร์เมื่อมีต้นแบบฟังก์ชันอยู่ในขอบเขต

#include <stdio.h>
void show(double d) {
    printf("%.1f\n", d);
}
int main(void) {
    show(5);
    return 0;
}

ตรวจสอบอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับการแปลงโดยปริยาย

สรุป: การแปลงโดยปริยาย

คุณได้เรียนรู้การแปลงชนิดอัตโนมัติแล้ว

  • C จะแปลงตัวถูกดำเนินการเป็นชนิดกลางร่วมกัน
  • จำนวนเต็มขนาดเล็กจะเลื่อนเป็น int
  • การแปลงจาก int เป็น double จะขยายอย่างปลอดภัย
  • การแปลงจาก double เป็น int จะตัดเศษทิ้ง
  • การหารจำนวนเต็มอาจทำให้เกิดผลลัพธ์ที่คาดไม่ถึง เว้นแต่ตัวถูกดำเนินการตัวหนึ่งจะเป็น double

คำถามที่พบบ่อย

บทเรียน “การแปลงโดยนัย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแปลงโดยนัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแปลงโดยนัย”

การเลื่อนชนิดโดยอัตโนมัติ คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การแปลงโดยนัย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม

ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแปลงโดยนัย
  2. การแคสต์โดยชัดแจ้ง
  3. การแปลงจำนวนเต็มและจำนวนทศนิยม
  4. ข้อผิดพลาดในการแปลง
← กลับไปที่ C Academy