C - بيان مشروط و Strcmp و Null String
سؤال
ما مدى أمان القيام بشيء مثل:
if (flag_val != NULL && strcmp (val, flag_val) == 0) {
// something
} else {
// something else
}
مع العلم ذلك في بعض الأحيان flag_val
سوف يكون NULL
وأحيانًا لا.
أعلم أنه سيتحقق أولاً إذا flag_val != NULL
, ، إذا قام بتقييم خطأ ، فلا ينبغي التحقق من الشرط الثاني بشكل صحيح؟
شكرًا
المحلول
صحيح ، إذا كان flag_val فارغًا ، فسيقوم عامل التشغيل && بدوارة قصيرة. طالما لا يمكن تغيير Flag_val بواسطة مؤشر ترابط آخر ، فهذا رمز آمن.
نصائح أخرى
إذا flag_val != NULL
يقيم على خطأ ، وهذا هو ، flag_val
هو NULL
, ، ثم سيوقف منطق الدائرة القصيرة تقييم بقية التعبير (لأن الشرط بأكمله لا يمكن أن يكون صحيحًا). ما تفعله بخير.
لا تنتمي إلى StackOverflow