อะไรคือความแตกต่างระหว่างตัวระบุรูปแบบ %ul และ %lu C?

Xari Khux Khwam Taek Tang Rahwang Taw Rabu Rup Baeb Ul Laea Lu C



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

ตัวระบุรูปแบบ %ul และ %lu คืออะไร

ในการเริ่มต้น สิ่งสำคัญคือต้องทราบว่าทั้งสองอย่าง %ul และ %ลู ตัวระบุรูปแบบ จะใช้เมื่อเขียนโปรแกรมในภาษา C และทั้งคู่เป็นตัวแทนของประเภทข้อมูลขนาดยาวที่ไม่ได้ลงนาม อย่างไรก็ตาม ตำแหน่งของตัวอักษร “ ' และ ' ใน แตกต่าง จดหมาย ' ใน ' และ ' ' หมายถึง ' ไม่ได้ลงนาม ' และ ' ยาว ” ตามลำดับ ประเภทอาร์กิวเมนต์ที่ต้องการถูกกำหนดโดยลำดับของตัวอักษรเหล่านี้ “ %ใน ” ระบุว่าอักขระหรือสตริงที่ใช้มีชนิดข้อมูลที่ไม่ได้ลงนาม นานาชาติ ในขณะที่ ' %l ” ระบุว่าเป็นชนิดข้อมูลขนาดยาวที่ไม่ได้ลงนาม กล่าวอีกนัยหนึ่ง %ul ระบุประเภทข้อมูลขนาดยาวที่ไม่ได้ลงนามในขณะที่ %ลู ระบุเหมือนเดิมแต่มีเพิ่มเติม “ ยาว ” ตัวปรับขนาด

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







นี่คือตัวอย่างโค้ดที่แสดงวิธีการ %ul และ %ลู ตัวระบุรูปแบบแตกต่างกัน:



ตัวระบุรูปแบบ %ul ใน C

#รวม

int หลัก ( ) {
int ยาวที่ไม่ได้ลงนาม i = 1234567890 ;
พิมพ์ฉ ( 'ใช้ตัวระบุรูปแบบ %%ul: %ul \n ' , ฉัน ) ;
กลับ 0 ;
}

ในโค้ดด้านบน เรากำหนดตัวแปร ฉัน เป็นจำนวนเต็มยาวที่ไม่ได้ลงนามและเริ่มต้นเป็น 1234567890 . เดอะ พิมพ์ฉ จากนั้นใช้คำสั่ง %ul ตัวระบุรูปแบบที่จะพิมพ์ค่าของ ฉัน . เพราะเพียงแค่ %ใน เป็นองค์ประกอบหลักของตัวระบุและ อยู่นอกรูปแบบก็จะพิมพ์ตัวเลขต่อท้ายออกมา ในตอนท้าย



เอาต์พุต





ตัวระบุรูปแบบ %lu ใน C

#รวม

int หลัก ( ) {
int ยาวที่ไม่ได้ลงนาม i = 1234567890 ;
พิมพ์ฉ ( 'ใช้ตัวระบุรูปแบบ %%lu: %lu \n ' , ฉัน ) ;
กลับ 0 ;
}

ในโค้ดข้างต้น ตัวแปรจำนวนเต็มยาวที่ไม่ได้ลงนาม ฉัน ถูกประกาศและเริ่มต้นเป็น 1234567890 แล้วพิมพ์โดยใช้ %ลู ตัวระบุรูปแบบ

เอาต์พุต



ความแตกต่างระหว่างตัวระบุรูปแบบ %ul และ %lu ใน C

1: ช่วงของค่า

ความแตกต่างหลักระหว่าง %ul และ %ลู เกี่ยวข้องกับช่วงของค่าที่คาดว่าจะแสดง เมื่อเขียนโปรแกรมในภาษา C ชนิดข้อมูลแบบยาวที่ไม่ได้ลงนามจะใช้รูปแบบที่แตกต่างจากชนิดข้อมูลอื่น รวมถึงชนิดข้อมูล int ที่ไม่ได้ลงนาม int แบบ 32 บิตต้องการหน่วยความจำเพียง 32 บิตในการจัดเก็บค่า ในขณะที่ unsigned long ต้องการ 64 บิตสำหรับข้อมูลประเภทเดียวกัน ดังนั้นจึงมีช่วงที่สำคัญมากกว่า int นี่หมายความว่า %ul จะยอมรับค่าตั้งแต่ 0 ถึง +2^32-1 ในขณะที่ %ลู ตัวระบุจะยอมรับค่าตั้งแต่ 0 ถึง +2^64-1

2: ความแม่นยำ

นอกจากนี้ยังมีความแตกต่างในความแม่นยำของค่าที่คาดว่าจะแสดง กับ %ul ตัวระบุโปรแกรมเมอร์สามารถแสดงค่าได้สูงสุด 2^32-1 เท่านั้น ในขณะที่ %ลู ตัวระบุสามารถแสดงค่าได้ถึง 2^64-1 แม้ว่าสิ่งนี้อาจดูเหมือนไม่แตกต่างมากนักในครั้งแรกที่เห็น แต่อาจส่งผลทางอ้อมต่อความแม่นยำของผลลัพธ์ โปรแกรมที่ออกแบบมาเพื่อจัดเก็บค่าที่มีช่วง เช่น +2^64 จะเกิดข้อผิดพลาดเมื่อใช้งาน %ul ตัวระบุเนื่องจากจะไม่สามารถจัดเก็บข้อมูลในรูปแบบที่ต้องการได้ทำให้สูญเสียความแม่นยำ

3: หน่วยความจำ

ในที่สุด, %ul และ %ลู ยังแตกต่างกันในการใช้หน่วยความจำ เดอะ %ul ตัวระบุต้องการหน่วยความจำ 32 บิตสำหรับข้อมูล ในขณะที่ %ลู ต้องการ 64 บิตสำหรับข้อมูลประเภทเดียวกัน หมายความว่า %ลู ใช้หน่วยความจำประมาณสองเท่า %ul . สิ่งนี้อาจดูเหมือนไม่แตกต่างมากนักในโปรแกรมขนาดเล็กและสเกลต่ำ แต่สิ่งนี้สามารถจัดการได้อย่างรวดเร็วเนื่องจากการใช้หน่วยความจำของโปรแกรมมักจะเพิ่มขึ้นตามความซับซ้อน ซึ่งหมายความว่า %ลู ไม่เหมาะอย่างยิ่งเมื่อต้องรับมือกับแอปพลิเคชันขนาดใหญ่

4: รูปแบบ

สิ่งสำคัญคือต้องเข้าใจรูปแบบที่แน่นอนของเอาต์พุตเมื่อใช้งาน %ul หรือ %ลู . โดยเฉพาะ %ul ตัวระบุรูปแบบจะแสดงผลจำนวนเต็มเป็นค่าเลขฐานสิบหก 8 หลักเสมอในขณะที่ %ลู ตัวระบุรูปแบบจะแสดงผลจำนวนเต็มเป็นค่าทศนิยม 8 หลัก ซึ่งหมายความว่าหากจำนวนเต็มแสดงเป็นค่าเลขฐานสิบหก ควรพิมพ์เป็น a %ul ในขณะที่จำนวนเต็มแสดงเป็นค่าทศนิยม ควรพิมพ์เป็น a %ลู .

ความคิดสุดท้าย

สิ่งสำคัญคือต้องเข้าใจความแตกต่างระหว่าง %ul และ %ลู ตัวระบุรูปแบบเมื่อทำงานกับภาษา C แม้ว่าอาจดูคล้ายกัน แต่ความแตกต่างหลักก็คือ %ul รูปแบบต้องการพารามิเตอร์จำนวนเต็มยาวที่ไม่ได้ลงนามในขณะที่ %ลู รูปแบบต้องการอินพุตจำนวนเต็มยาวที่ไม่ได้ลงนาม เดอะ %ul ตัวระบุรูปแบบจะแสดงผลจำนวนเต็มเป็นค่าเลขฐานสิบหก 8 หลักเสมอในขณะที่ %ลู ตัวระบุรูปแบบจะแสดงผลจำนวนเต็มเป็นค่าทศนิยม 8 หลัก สุดท้ายนี้ สิ่งสำคัญคือต้องทราบว่า %ul และ %ลู ตัวระบุรูปแบบสามารถใช้ได้เฉพาะเมื่อทำงานกับตัวแปรที่มีประเภท ‘ ยาว