سؤال

كنت تبحث فقط عن طريق صفحة على printf و شيء حدث لي.كنت أتساءل إذا كان هناك أي "اللغة المحامين" هنا يمكن أن الجواب بسيط نسبيا السؤال :-P.

وبالتالي فإن 't' التعديل يعرف

بعد تحويل عدد صحيح يتوافق مع ptrdiff_t الحجة.

فما هو من المفترض أن يحدث إذا كنت الجمع بين هذا مع صحيح غير الموقعة التحويل ؟ بوضوح o,u,x و x الكل ينوي أن تفسر على أنها غير موقعة القيم ، في حين d و أنا وقعت.

وبالمثل ، هناك توقيع/غير الإصدارات لجميع المعدلات (int/unsigned int ، size_t/ ssize_t, إلخ) إلا ptrdiff_t.

في الممارسة العملية, لا شيء سيء يحدث منذ موقعة الإصدارات من أنواع تحتل نفس القدر من المساحة كما وقع الإصدارات.وذلك الحق عن وحدات البايت الحصول برزت من المكدس.

لذلك لا شيء "سيء" يحدث في الواقع في المطبوعات القيمة المتوقعة لجميع الأشياء اختبار باستثناء "INT_MIN"(على افتراض أن sizeof(int) == sizeof(ptrdiff_t).

printf("%tu %td\n", INT_MIN, INT_MIN);

طباعة

2147483648 -2147483648

على نظام 32 بت.

لا معيار لها أي رأي حول هذا الموضوع ؟ أعتقد الإجابة ستكون "غير معرف السلوك." ولكن فكرت أن تسأل ;).

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

المحلول

لا شيء أن نرى هنا.مدونة كنت قد كتبت القانونية.

فقط بعض الحقائق لماذا:

  • كل صحيح وقعت أنواع موقعة النظراء مع نفس الحجم/المواءمة بين متطلبات
  • ptrdiff_t ويشرع أن يكون صحيح وقعت نوع من المعيار.ولذلك ، فقد ظهر التوأم.(في الواقع, نفس المنطق ينطبق على size_t وكذلك - ssize_t ليس ج ، ولكن POSIX)
  • على t طول محدد يجب أن تعمل مع d, i, o, u, x, X أنواع
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top