سؤال

في الواقع أنا (ربما) مشكلة "بسيطة". لذلك لا أعرف كيف ألقي عدد صحيح موقّع إلى عدد صحيح غير موقّع.

رمز بلدي :

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top