วิธีการจัดรูปแบบ unsigned long long int ด้วย printf ใน C อย่างถูกต้อง

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

ความเข้าใจเกี่ยวกับ Unsigned Long Long Int

unsigned long long int เป็นประเภทข้อมูลใน C ที่สามารถจัดเก็บจำนวนเต็มที่มีขนาดใหญ่ ทำให้มีช่วงที่กว้างกว่าจำนวนเต็มมาตรฐาน มีความกว้างขั้นต่ำที่รับประกันได้ 64 บิต เมื่อใช้ printf เพื่อแสดงประเภทนี้ การเลือกตัวระบุรูปแบบที่ถูกต้องเป็นสิ่งสำคัญ มิฉะนั้นคุณอาจพบกับผลลัพธ์ที่ไม่คาดคิด เช่น ข้อมูลที่ไม่ถูกต้องหรือคำเตือน

ปัญหา

พิจารณาตัวอย่างโค้ดต่อไปนี้ที่มุ่งหมายจะพิมพ์ unsigned long long int:

#include <stdio.h>

int main() {
    unsigned long long int num = 285212672; // FYI: fits in 29 bits
    int normalInt = 5;
    printf("หมายเลขของฉันกว้าง %d ไบต์และค่าของมันคือ %ul. หมายเลขปกติคือ %d.\n", sizeof(num), num, normalInt);
    return 0;
}

ผลลัพธ์อาจทำให้คุณประหลาดใจ:

หมายเลขของฉันกว้าง 8 ไบต์และค่าของมันคือ 285212672l. หมายเลขปกติคือ 0.

ที่นี่ ผลลัพธ์สำหรับ num ดูไม่ถูกต้อง เพราะตัวระบุรูปแบบที่ใช้ใน printf ไม่ตรงกับประเภทข้อมูล

วิธีการแก้ปัญหา

เพื่อจัดรูปแบบ unsigned long long int อย่างถูกต้องโดยใช้ printf คุณต้องใช้ตัวระบุรูปแบบที่ถูกต้อง: llu ด้านล่างนี้คือวิธีการทำขั้นตอนทีละขั้นตอน:

คู่มือการจัดรูปแบบทีละขั้นตอน

  1. ใช้ตัวระบุที่ถูกต้อง: แทนที่จะใช้ %ul ซึ่งไม่เหมาะสม ให้ใช้ %llu สิ่งนี้บอกคอมไพเลอร์ว่าคุณกำลังจัดการกับประเภท unsigned long long int

  2. อัปเดตคำสั่งพิมพ์ของคุณ: ปรับฟังก์ชัน printf ของคุณให้ดูเหมือนดังนี้:

    printf("หมายเลขของฉันกว้าง %d ไบต์และค่าของมันคือ %llu. หมายเลขปกติคือ %d.\n", sizeof(num), num, normalInt);
    
  3. ตัวอย่างที่สมบูรณ์: นี่คือโค้ดที่ถูกแก้ไขแล้วแบบเต็ม:

    #include <stdio.h>
    
    int main() {
        unsigned long long int num = 285212672; // FYI: fits in 29 bits
        int normalInt = 5;
        printf("หมายเลขของฉันกว้าง %d ไบต์และค่าของมันคือ %llu. หมายเลขปกติคือ %d.\n", sizeof(num), num, normalInt);
        return 0;
    }
    
  4. ผลลัพธ์ที่คาดหวัง: ตอนนี้ หากคุณเรียกใช้โปรแกรมของคุณอีกครั้ง คุณควรเห็นผลลัพธ์ที่ถูกต้อง:

    หมายเลขของฉันกว้าง 8 ไบต์และค่าของมันคือ 285212672. หมายเลขปกติคือ 5.
    

ข้อสรุปที่สำคัญ

  • เสมอให้ตรงกับประเภทข้อมูลกับตัวระบุรูปแบบที่เหมาะสมใน printf.
  • สำหรับ unsigned long long int, ใช้ %llu ในสตริงรูปแบบของคุณ.
  • การวางแผนโค้ดของคุณเพื่อรวมประเภทข้อมูลที่เหมาะสมสามารถช่วยป้องกันข้อผิดพลาดในระหว่างการทำงานและผลลัพธ์ที่ไม่คาดคิด.

บทสรุป

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