سؤال

أنا مبتدئ في C ، واستخدام برنامج التحويل البرمجي Turbo C ++ (16 بت).

في البرنامج الذي أكتبه ، يبلغ الحد الأقصى للإجابة حوالي 32000 long int.

إذا قمت بتنفيذ البرنامج التالي:

#include <stdio.h>
void main()
{
    long int x;
    x=40000;
    printf("%d", x);
}

ثم أحصل على خطأ في أن القيمة الثابتة طويلة في الوظيفة main().

كيف يمكنني الحصول على إجابة أكثر من 32000 والتخلص من هذا الخطأ؟ أيضًا NW أقوم بتغيير ٪ D إلى ٪ LD واستخدم 40000L BT عندما أستخدم عدد صحيح غير موقّع ، ثم أحتاج أيضًا إلى استخدام "L" مع 40000 // ؟؟

هل كانت مفيدة؟

المحلول

استخدم ٪ ld في printf للطويل int. ٪ D هو Int الذي يحتوي فقط على 16 بت في المترجم الخاص بك. وللرسالة الخطأ ، استخدم x = 40000L.

نصائح أخرى

تغيير طويل إلى غير موقعة ، 40000 سوف تناسب int غير موقعة.

على افتراض أنك على Windows ، فإن أفضل حل لهذا هو استهداف منصة 32 أو 64 بت. لن يتم تشغيل برامج 16 بت على إصدارات 64 بت من Windows ؛ يجب أن ترقية حقا.

لدى Microsoft إصدار مجاني من Visual Studio: Visual C ++ Express Edition. هذا خيار ممتاز أيضًا لأنه يأتي مع IDE الكامل.

يتوفر GCC أيضًا لنظام التشغيل Windows في شكل Mingw. لسوء الحظ ، لا تطلق Mingw نفسها المترجمين الجاهدين للاستخدام ، لكن الآخرين يفعلون ذلك ، مثل المعادلة أو TDM.

ربما تفرع على التنسيق المتغير قد تساعد :) بحلول الوقت الذي تحصل فيه على التوسع (أو النظام الفرعي printf ()) في الواقع الحجج المتنوعة, من المفترض أنك تعرف نوعهم.

هذا لا ينطبق على printf فحسب ، بل أي وظيفة أخرى تستخدم Va _*() أو v*printf () عند مناقشة printf. لا تفقد مسار الأنواع الخاصة بك.

أيضا ، تتبع التوقيع لتجنب النتائج غير المتوقعة.

بمعنى آخر ، بحلول الوقت الذي تتصل فيه printf () ، أو أي شيء آخر يقبل المفلس, ، تأكد من ما تمر به. هذا لا يقتصر على printf () ، في الواقع المغامرة وراء ذلك في كثير من الأحيان لن ينتج تحذيرات التحويلات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top