ج: تحويل موقعة إلى غير موقعة
-
26-09-2019 - |
سؤال
في الواقع أنا (ربما) مشكلة "بسيطة". لذلك لا أعرف كيف ألقي عدد صحيح موقّع إلى عدد صحيح غير موقّع.
رمز بلدي :
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
إذا أرسلت القيمة غير الموقعة إلى وحدة التحكم (انظر خط الكود الأخير) ، فأنا دائمًا ما أعود عددًا صحيحًا موقّعًا.
هل يمكنك مساعدتي؟
شكرًا جزيلاً!
التحيات الطيب ، المحترف
المحلول
printf("Unsigned : %u\n", uEntry);
// ^^
يجب عليك استخدام %u
محدد لإخبار printf
وقت التشغيل أن uEntry
هو unsigned int
. إذا كنت تستخدم %d
ال printf
ستتوقع الوظيفة int
, ، وبالتالي إعادة تفسير إدخالك مرة أخرى إلى قيمة موقعة.
نصائح أخرى
قم بإلحاق هذين الخطين في نهاية التعليمات البرمجية الخاصة بك ، وسوف تفهم ما يجري.
printf("entry: signed = %d, unsigned = %u, hex = 0x%x\n", entry, entry entry);
printf("uEntry: signed = %d, unsigned = %u, hex = 0x%x\n", uEntry,uEntry,uEntry);
لا تنتمي إلى StackOverflow