ما الفرق بين محددات التنسيق٪ ul و٪ lu C؟

Ma Alfrq Byn Mhddat Altnsyq Ul W Lu C



استخدام السليم محددات التنسيق هو عنصر حاسم في البرمجة الناجحة في لغة سي. هذا ما يفسر سبب ضرورة معرفة سبب وجود ملف ٪ ul و ٪ lu محددات التنسيق اختلف. يعد فهم التمييز بين هذين الأمرين مهمًا للغاية لأنه يغير كيفية تفاعل المبرمج مع بيئة النظام ، ويمكن أن تظهر الأخطاء المحتملة عند استخدام محددات التنسيق هذه بشكل غير صحيح.

ما المقصود بمحددات التنسيق٪ ul و٪ lu؟

للبدء ، من المهم ملاحظة أن كليهما ٪ ul و ٪ lu محددات التنسيق تُستخدم عند البرمجة بلغة C وكلاهما يمثل أنواع بيانات طويلة غير موقعة. ومع ذلك ، فإن موقف الحروف ' ل ' و ' في 'يختلف. الرسائل ' في ' و ' ل ' الوقوف ' غير موقعة ' و ' طويل ،' على التوالى. يتم تحديد نوع الوسيطة المقصودة من خلال تسلسل هذه الأحرف. ال ' ٪في 'يحدد أن الحرف أو السلسلة التي يتم تطبيقه عليها له نوع بيانات غير موقعة int بينما ال ' ٪ l 'جزء من نوع بيانات طويل بدون توقيع. بعبارة أخرى، ٪ ul يشير إلى نوع بيانات طويل بدون توقيع أثناء ٪ lu يشير إلى نفسه ولكن مع ' طويل معدّل الحجم.

نتيجة لذلك ، إذا كنت تستخدم ٪ ul في متغير ليس عددًا صحيحًا طويلًا بدون إشارة ، يمكنك الحصول على لاحقة ل في نهاية الإخراج. عند محاولة طباعة متغير بنوع بيانات معين ، من الضروري استخدام محدد التنسيق المناسب.







إليك بعض التعليمات البرمجية التي توضح كيفية القيام بذلك ٪ ul و ٪ lu تختلف محددات التنسيق:



٪ ul محدد التنسيق في C

# تضمين

انت مين ( ) {
كثافة العمليات الطويلة غير الموقعة أنا = 1234567890 ؛
printf ( 'استخدام محدد تنسيق ٪٪ ul:٪ ul ' ، أنا ) ؛
يعود 0 ؛
}

في الكود أعلاه ، نحدد المتغير أنا كعدد صحيح طويل بدون إشارة وتهيئته إلى 1234567890 . ال printf ثم يستخدم الأمر ٪ ul محدد التنسيق لطباعة قيمة أنا . لأن فقط ٪في هو المكون الرئيسي للمحدد و ل خارج التنسيق ، سيتم طباعة الرقم مع اللاحقة ل في نهايةالمطاف.



انتاج |





٪ lu محدد تنسيق في C

# تضمين

انت مين ( ) {
كثافة العمليات الطويلة غير الموقعة أنا = 1234567890 ؛
printf ( 'استخدام محدد تنسيق ٪٪ lu:٪ lu ' ، أنا ) ؛
يعود 0 ؛
}

في الكود أعلاه ، متغير عدد صحيح طويل بدون إشارة أنا تم التصريح عنه وتهيئته إلى 1234567890 ثم طباعته باستخدام امتداد ٪ lu محدد التنسيق.

انتاج |



الاختلافات بين٪ ul و٪ lu مُحدد التنسيق في C

1: نطاق القيم

الفرق الرئيسي بين ٪ ul و ٪ lu تتعلق بنطاق القيم المتوقع تمثيلها. عند البرمجة بلغة C ، يستخدم نوع البيانات الطويلة غير الموقعة تنسيقًا مختلفًا عن أنواع البيانات الأخرى ، بما في ذلك نوع البيانات غير الموقعة. يتطلب عدد 32 بت int 32 بت فقط من الذاكرة لتخزين قيمته ، بينما يتطلب الطول غير الموقعة 64 بت لنفس النوع من البيانات ، وبالتالي يكون له نطاق أكثر أهمية من int. هذا يعني ذاك ٪ ul سيقبل القيم من 0 إلى + 2 ^ 32-1 ، بينما ٪ lu سيقبل المحدد القيم من 0 إلى + 2 ^ 64-1.

2: الدقة

هناك أيضًا اختلاف في دقة القيم المتوقع تمثيلها. مع ال ٪ ul المحدد ، يكون المبرمج قادرًا فقط على تمثيل قيم تصل إلى 2 ^ 32-1 ، بينما ٪ lu يمكن أن يمثل المحدد قيمًا تصل إلى 2 ^ 64-1. في حين أن هذا قد لا يبدو فرقًا كبيرًا للوهلة الأولى ، إلا أنه قد يؤثر بشكل غير مباشر على دقة النتائج. برنامج مصمم لتخزين قيمة بها ، على سبيل المثال ، نطاق + 2 ^ 64 سيواجه أخطاء عند الاستخدام ٪ ul المحددات لأنها لن تكون قادرة على تخزين البيانات بالتنسيق المطلوب ، مما يؤدي إلى فقدان الدقة.

3: الذاكرة

أخيراً، ٪ ul و ٪ lu تختلف أيضًا في استخدامها للذاكرة. ال ٪ ul يتطلب محدد 32 بت من الذاكرة للبيانات ، بينما ٪ lu يتطلب 64 بت لنفس النوع من البيانات ، مما يعني ذلك ٪ lu يستهلك حوالي ضعف مساحة الذاكرة ٪ ul . قد لا يبدو هذا فرقًا كبيرًا في البرامج الصغيرة منخفضة النطاق ، ولكن يمكن أن يصبح هذا سريعًا غير قابل للإدارة نظرًا لأن استخدام ذاكرة البرنامج غالبًا ما يزداد مع التعقيد ، مما يعني أن ٪ lu ليست مثالية عند التعامل مع التطبيقات واسعة النطاق.

4: التنسيق

من المهم فهم التنسيق الدقيق للإخراج عند الاستخدام ٪ ul أو ٪ lu . على وجه التحديد ، فإن ٪ ul يُخرج محدد التنسيق دائمًا العدد الصحيح كقيمة سداسية عشرية مكونة من 8 أرقام بينما ٪ lu يُخرج محدد التنسيق العدد الصحيح كقيمة عشرية مكونة من 8 أرقام. هذا يعني أنه إذا تم تمثيل عدد صحيح كقيمة سداسية عشرية ، فيجب طباعته كملف ٪ ul بينما إذا تم تمثيل العدد الصحيح كقيمة عشرية ، فيجب طباعته على هيئة a ٪ lu .

افكار اخيرة

من المهم أن نفهم الفروق الدقيقة بين ٪ ul و ٪ lu محددات التنسيق عند العمل بلغة C. على الرغم من أنها قد تبدو متشابهة ، إلا أن الاختلاف الأساسي هو ذلك ٪ ul يتطلب التنسيق معلمة عدد صحيح طويل بدون إشارة بينما ٪ lu تنسيق يتوقع إدخال عدد صحيح طويل بدون إشارة. ال ٪ ul يُخرج محدد التنسيق دائمًا العدد الصحيح كقيمة سداسية عشرية مكونة من 8 أرقام بينما ٪ lu يُخرج محدد التنسيق العدد الصحيح كقيمة عشرية مكونة من 8 أرقام. أخيرًا ، من المهم ملاحظة أن ملف ٪ ul و ٪ lu لا يمكن استخدام محددات التنسيق إلا عند العمل مع متغيرات من النوع ' طويل '.