سؤال
أنا مبتدئ في 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 () ، في الواقع المغامرة وراء ذلك في كثير من الأحيان لن ينتج تحذيرات التحويلات البرمجية.