سؤال

وهذا يعمل بشكل جيد

if ((a >= 40 && a <= 50) || (a >= 60 && a <= 80))
// do something

وكيف أفعل العكس من ذلك؟

if ((a < 40 && a > 50) || (a < 60 && a > 80))
// do something

ولا يعمل الكود كما هو متوقع. أريد شيء من هذا القبيل <م> إن لم يكن (شرط)

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

المحلول

وأنت قد ترغب في النظر في قوانين دي مورغان .

1. !((a >= 40 && a <= 50) || (a >= 60 && a <= 80))

2. (!(a >= 40 && a <= 50) && !(a >= 60 && a <= 80))

3. ((!(a >= 40) || !(a <= 50)) && (!(a >= 60) || !(a <= 80))

4. ((a < 40 || a > 50) && (a < 60 || a > 80))


or in other words: (a < 40 || (50 < a && a < 60) || 80 < a)

نصائح أخرى

if ((a < 40 || a > 50) && (a < 60 || a > 80))
// do something

وحين أوصي معرفة كيفية جعلها تعمل بشكل صحيح (بإعادة كتابته)

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

ويجب أن تعمل على ما أعتقد.

وكنت في حاجة الى "OR"

if ((a < 40 || a > 50) && (a < 60 || a > 80))

وأو، NOT

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

وأنت المثال الثاني

if ((a < 40 && a > 50) || (a < 60 && a > 80))

ولا معنى له كما a لا يمكن أن تكون أقل من 40 وأكبر من 50 (أو أقل من 60 وأكبر من 80) في نفس الوقت.

وشيء من هذا القبيل

if (!((a < 40 && a > 50) || (a < 60 && a > 80)))

أو

if ((a < 40 || a > 50) && (a < 60 || a > 80))
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

وعلى افتراض أن تريد ما يعادل

if ( not ((a >= 40 && a <= 50) || (a >= 60 && a <= 80)) )

وبعد ذلك، إذا كنت تفكر في التعبير الأصلي، ينبغي أن يكون

if (a < 40 || (a > 50 && a < 60) || a > 80)

والتعبير الأول هو السماح على a ليكون رقم 40-50 أو من 60 إلى 80. ينفي أن في اللغة الإنجليزية وتريد عددا أقل من 40 أو بين 50 و 60 أو أكبر من 80.

القوانين

ودي مورغان يمكن أن تحصل على إجابة دقيقة، ولكن يفضل التعليمات البرمجية التي يمكنك أن تقرأ بصوت عال وجعل الشعور.

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