سؤال

هل هناك أي مترجم يحتوي على توجيه أو معلمة لحساب عدد صحيح يلحق الضيوف. علي سبيل المثال:

float f = (1/3)*5;
cout << f;

"F" هو "0"، لأن ثوابت الحساب (1، 3، 10) عدد صحيح. أريد تحويل حساب عدد صحيح مع توجيه أو معلمة مترجم. أعني، لن أستخدم البادئة الصريحة أو ".F" مثل هذا:

float f = ((float)1/3)*5;

أو

float f = (1.0f/3.0f)*5.0f;

هل تعرف أي مترجم C / C ++ الذي يحتوي على أي معلمة للقيام بهذه العملية دون صب صريح أو ".f"؟

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

المحلول

إذا كنت لا تحب أي من الطريقتين الذي ذكرته، فربما تكون حظا مؤقتا.

ماذا كنت تأمل في تحقيق ذلك؟ يتعين على أي مشغل متخصص "تعويم القسم" تحويل Ints إلى الطبعات في مرحلة ما بعد التوت، مما يعني أنك لن تحصل على أي أداء فائدة على التنفيذ.

نصائح أخرى

أي مترجم فعل ما تريده لن يكون مترجم C ++ مطابقا. يتم تحديد دلالات القسم الصحيحة جيدا (على الأقل للأرقام الإيجابية)، وأنت تقترح تغيير ذلك.

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

لذلك، النصيحة الوحيدة التي حصلت عليها هي كتابة اختبارات الوحدات، لديها مراجعات رمز، ومحاولة تجنب الأرقام السحرية (بدلا من تحديدها const float).

في C ++، من الغريب بعض الشيء أن نرى مجموعة من القيم الرقمية التي رشها من خلال التعليمات البرمجية. بشكل عام، يعتبر أفضل الممارسات لتحريك أي "أرقام سحرية" مثل هذه إلى قيمة ثابتة ثابتة، والتي تزيل هذه المشكلة.

لا، هذين الخياران هم أفضل ما لديك.

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