לעיתים ביטוי בוליאני מורכב ממספר ביטויים בוליאניים פשוטים יותר,
לדוגמה:
"אם תקבל ציון 100 במתמטיקה ותקבל ציון 100 באנגלית נקנה לך מחשב חדש".
"אם תקבל ציון 100 במתמטיקה או תקבל ציון 100 באנגלית נקנה לך מחשב חדש". במשפט הראשון התנאים לקבלת מחשב חדש הוחמרו, לא מספיק לקבל ציון 100 במתמטיקה (משימה קשה כשלעצמה), אלא, נדרש לקבל גם ציון 100 באנגלית.
אם "נפספס" באחד מהמקצועות לא נקבל מחשב חדש. המשפט השני מקל עלינו, מספיק שנקבל ציון 100 באחד מהמקצועות (מתמטיקה או אנגלית) על מנת לקבל מחשב חדש. המשותף לשני המשפטים – שניהם מורכבים משני משפטים בוליאניים פשוטים:
"אם תקבל ציון 100 במתמטיקה"
"אם תקבל ציון 100 באנגלית"
השוני בין המשפטים הוא במילת הקשר ביניהם :
במשפט הראשון השתמשנו ב- וגם - מקובל לכנותו AND. במשפט השני השתמשנו ב- או - מקובל לכנותו OR.
גם בתכנות נאלץ לבדוק מספר ביטויים בוליאניים על מנת להחליט האם לבצע פעולה מסוימת או שלא לבצע אותה.
לדוגמה: "אם X גדול מ-0 וגם Y גדול מ- 0 אז צייר עיגול".
"אם X גדול מ-0" – הביטוי הבוליאני הפשוט הראשון,
"אם Y גדול מ-0" – הביטוי הבוליאני הפשוט השני.
מילת הקשר ביניהם היא 'וגם' (AND) ולכן שניהם צריכים להתקיים על מנת שנצייר עיגול. "אם רוחב המלבן גדול מ-100 או גובה המלבן גדול מ-100 אז צייר עיגול".
"אם רוחב המלבן גדול מ- 100" - הביטוי הבוליאני הפשוט הראשון,
"אם גובה המלבן גדול מ- 100" - הביטוי הבוליאני הפשוט השני.
מילת הקשר ביניהם היא או (OR) ולכן רק אחד מהם צריך להתקיים על מנת שנצייר עיגול.
בשפת #C מוגדרים שני אופרטורים המאפשרים ביצוע התניות מורכבות: האופרטור && – מממש פעולת AND ('וגם') - יחזיר true רק כאשר שני האופרנדים שלו (או כולם) הם true . האופרטור || – מממש פעולת OR ('או') - יחזיר true כאשר אחד האופרנדים או כולם הם true .
בשני המקרים האופרנדים יכולים להיות משתנים בוליאניים או ביטויים בוליאניים.
האופרטור && (AND)
מחזיר true רק כאשר שני האופרנדים שווים true . לדוגמה:
בתוכנית מוגדרים שלושה משתנים בוליאניים:
bool flag1;
bool flag2;
bool result;
מה יהיה ערכו של המשתנה הבוליאני result לאחר ביצוע הפעולה הבאה?
;result = flag1 && flag2
flag1
flag2
&& (AND)
false
false
false
true
false
false
false
true
false
true
true
true
האופרטור || (OR)
יחזיר true כאשר לפחות אחד האופרנדים שווה true . לדוגמה:
בתוכנית מוגדרים שלושה משתנים בוליאניים:
bool flag1;
bool flag2;
bool result;
מה יהיה ערכו של המשתנה הבוליאני result לאחר ביצוע הפעולה הבאה?
result = flag1 || flag2;
flag1
flag2
II (OR)
false
false
false
true
false
true
false
true
true
true
true
true
דוגמת קוד (Logical Operator):
1 : classProgram
2 : {
3 : staticvoidMain(string[]args)
4 : {
5 : intnum1=11;
6 : intnum2=12;
7 : intnum3=13;
8 : intnum4=14;
9 : boolresult=(num1<=num2)||(num3>num1);
10 : Console.WriteLine(result);
11 : result=(num4<=num2)&&(num4!=num1);
12 : Console.WriteLine(result);
13 : }
14 : }
בשורה 9 - ביטוי בוליאני מורכב תוך שימוש באופרטור OR, מספיק שרק אחד מהאופרנדים של האופרטור || יהיה true כדי שכל הביטוי יהיה true. בשורה 11 - ביטוי בוליאני מורכב תוך שימוש באופרטור AND, מספיק שרק אחד מהאופרנדים של האופרטור && יהיה true כדי שכל הביטוי יהיה true. הערה - הסוגריים הם לא חובה, אבל הקוד יותר קריא כאשר עוטפים את האופרנדים בסוגריים.
פלט:
סדר קדימות של אופרטורים
האופרטור && (AND) הוא מסדר קדימות גבוה יותר מאשר האופרטור || (OR) והוא יחושב קודם:
התוצאה של הביטוי הוא false משום שתחילה מתבצע החישוב של flag2 && flag3 (מכיוון ש-flag2=false כל הבטוי שווה false) ורק לאחר מכן מתבצע חישוב של || בין התוצאה הראשונה לבים flag1.