ما المقصود بمحددات التنسيق٪ 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 لا يمكن استخدام محددات التنسيق إلا عند العمل مع متغيرات من النوع ' طويل '.