سؤال

أنا إيجابي للغاية حول هذا الأمر، ولكن فقط لتكون على الجانب الآمن:

هل سيتم تقييم ضمان C القياسي الذي وسلاسل (A && B && ...) إلى اليمين، وسيتوقف هذا التقييم بمجرد وجود 0؟

نفس السؤال عن أو. (بمجرد وجود 1)

هل يمكنني الاعتماد على هذا لغات أسلوب C الأخرى؟

هل هذه التعليمات البرمجية آمنة:

if (somePtr!=NULL && somePtr->someMember==123)
{
     ...
}
هل كانت مفيدة؟

المحلول

نعم، مضمون ل C، C ++ و C #. الشيء نفسه ينطبق على تمكين Delphi مع تمكين "تقييم الركاء القصير".

هذا هو سلوك العديد من خطوط التعليمات البرمجية تعتمد على هذه اللحظة.

نصائح أخرى

نعم، يتم توحيدها من قبل كل من C و C ++.

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

نعم إنها كذلك.

لقد رأيت الأشخاص الذين يعتقدون أنه غير واضح، واستبداله && مع هذا النموذج:

if (a)
if (b)
if (c)
if (d) {
}

أنا شخصيا أعتقد أن هذا كيندا القبيح.

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