logical-operators-in-c++

“`html

Logical Operators in C++ are the symbols employed to execute logical functions and make choices. Whether you need to evaluate several conditions or manage loops based on Boolean logic, logical operators assist you in all these activities. In this article, we will explore what logical operators are in C++, their various types, precedence and associativity, short-circuit evaluation, and a comparison with bitwise operators in C++.

Table of Contents:

What are Logical Operators in C++?

Logical operators in C++ allow you to conduct logical operations on two or more boolean expressions and yield a result of either true or false. These operators are frequently utilized in conditional statements such as if, while, etc., to direct the program’s flow.

Types of Logical Operators in C++

There are three categories of logical operators:

Operator Name Symbol Description
Logical AND && Returns true if both conditions are satisfied.
Logical OR || Returns true if at least one condition holds.
Logical NOT ! Inverts the logical value of the condition.

Now, let’s briefly discuss each type of logical operator, with examples in C++:

1. Logical AND (&&) in C++

The logical AND operator in C++ is utilized to ascertain if both conditions hold true and returns true if they do, otherwise it provides false.

Syntax:

condition1 && condition2

Truth Table for Logical AND (&&):

condition1 condition2 (condition1 && condition2)
true true true
true false false
false true false
false false false

Example:

Cpp

Code Copied!

var isMobile = window.innerWidth “);

editor72401.setValue(decodedContent); // Set the default text editor72401.clearSelection();

editor72401.setOptions({ maxLines: Infinity });

function decodeHTML72401(input) { var doc = new DOMParser().parseFromString(input, “text/html”); return doc.documentElement.textContent; }

// Function to copy code to clipboard function copyCodeToClipboard72401() { const code = editor72401.getValue(); // Get code from the editor navigator.clipboard.writeText(code).then(() => { // alert(“Code copied to clipboard!”); jQuery(“.maineditor72401 .copymessage”).show(); setTimeout(function() { jQuery(“.maineditor72401 .copymessage”).hide(); }, 2000); }).catch(err => { console.error(“Error copying code: “, err); }); }

function runCode72401() { var code = editor72401.getSession().getValue(); jQuery(“#runBtn72401 i.run-code”).show(); jQuery(“.output-tab”).click();

jQuery.ajax({ url: “https://intellipaat.com/blog/wp-admin/admin-ajax.php”, type: “post”, data: { language: “cpp”, code: code, cmd_line_args: “”, variablenames: “”, action: “compilerajax” }, success: function(response) { var myArray = response.split(“~”); var “““html data = myArray[1];

jQuery(“.output72401”).html(“

"+data+"");
jQuery(".maineditor72401 .code-editor-output").show();
jQuery("#runBtn72401 i.run-code").hide();

}
})
}
   
function closeoutput72401() {    
    var code = editor72401.getSession().getValue();
    jQuery(".maineditor72401 .code-editor-output").hide();
}

// Link event listeners to the buttons
document.getElementById("copyBtn72401").addEventListener("click", copyCodeToClipboard72401);
document.getElementById("runBtn72401").addEventListener("click", runCode72401);
document.getElementById("closeoutputBtn72401").addEventListener("click", closeoutput72401);



Result:

Logical AND

The program demonstrates how the logical AND operator evaluates conditions to determine if an individual is 18 years or older and has a score exceeding 80. If both conditions are satisfied, it displays “Eligible for the program” otherwise, it shows “Not eligible”.

2. Logical OR (||) in C++

The logical OR operator in C++ verifies if at least one of the conditions holds true and returns true in such a case. It returns false only if both conditions are false.

Syntax:

condition1 || condition2

Truth Table for Logical OR (||):

condition1 condition2 (condition1 && condition2)
true  true  true 
true  false  true 
false  true  true 
false  false false 

Illustration:

Cpp

Code Copied!

var isMobile = window.innerWidth ");

editor59239.setValue(decodedContent); editor59239.clearSelection();

editor59239.setOptions({ maxLines: Infinity });

function decodeHTML59239(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; }

// Function to copy code to clipboard function copyCodeToClipboard59239() { const code = editor59239.getValue(); navigator.clipboard.writeText(code).then(() => { jQuery(".maineditor59239 .copymessage").show(); setTimeout(function() { jQuery(".maineditor59239 .copymessage").hide(); }, 2000); }).catch(err => { console.error("Error copying code: ", err); }); }

function runCode59239() {

var code = editor59239.getSession().getValue();

jQuery("#runBtn59239 i.run-code").show(); jQuery(".output-tab").click();

jQuery.ajax({ url: "https://intellipaat.com/blog/wp-admin/admin-ajax.php", type: "post", data: { language: "cpp", code: code, cmd_line_args: "", variablenames: "", action:"compilerajax" }, success: function(response) { var myArray = response.split("~"); var data = myArray[1];

jQuery(".output59239").html("

"+data+"");
            jQuery(".maineditor59239 .code-editor-output").show();
            jQuery("#runBtn59239 i.run-code").hide();
        }
    })
}

function closeoutput59239() {   
    var code = editor59239.getSession().getValue();
    jQuery(".maineditor59239 .code-editor-output").hide();
}

// Link event listeners to the buttons
document.getElementById("copyBtn59239").addEventListener("click", copyCodeToClipboard59239);
document.getElementById("runBtn59239").addEventListener("click", runCode59239);
document.getElementById("closeoutputBtn59239").addEventListener("click", closeoutput59239);



Result:

Logical OR

The program demonstrates the application of the logical OR operator to ascertain if a student may enter the examination, provided that they achieved a score of 50 or higher, or have a minimum attendance of 75%.

3. Logical NOT (!) in C++

The logical NOT operator in C++ serves to invert the truth value of a condition. Thus, if a condition is true, this operator will convert it to false, and vice versa.

Syntax:

!condition

Truth Table for Logical NOT (!)

Condition (!Condition)
true  false 
false  true 

Illustration:

Cpp
``````html

Code Duplicated!

var isMobile = window.innerWidth ");

editor8446.setValue(decodedContent); // Assign the default text editor8446.clearSelection();

editor8446.setOptions({ maxLines: Infinity });

function decodeHTML8446(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; }

// Function to copy code to clipboard function copyCodeToClipboard8446() { const code = editor8446.getValue(); // Retrieve code from the editor navigator.clipboard.writeText(code).then(() => { // alert("Code duplicated to clipboard!");

jQuery(".maineditor8446 .copymessage").show(); setTimeout(function() { jQuery(".maineditor8446 .copymessage").hide(); }, 2000); }).catch(err => { console.error("Error duplicating code: ", err); }); }

function runCode8446() {

var code = editor8446.getSession().getValue();

jQuery("#runBtn8446 i.run-code").show(); jQuery(".output-tab").click();

jQuery.ajax({ url: "https://intellipaat.com/blog/wp-admin/admin-ajax.php", type: "post",

data: { language: "cpp", code: code, cmd_line_args: "", variablenames: "", action:"compilerajax" }, success: function(response) { var myArray = response.split("~"); var data = myArray[1];

jQuery(".output8446").html("

"+data+"");
									jQuery(".maineditor8446 .code-editor-output").show();
									jQuery("#runBtn8446 i.run-code").hide();
									
								}
							})
					

						}
						
						
		function closeoutput8446() {	
		var code = editor8446.getSession().getValue();
		jQuery(".maineditor8446 .code-editor-output").hide();
		}

    // Attach event listeners to the buttons
    document.getElementById("copyBtn8446").addEventListener("click", copyCodeToClipboard8446);
    document.getElementById("runBtn8446").addEventListener("click", runCode8446);
    document.getElementById("closeoutputBtn8446").addEventListener("click", closeoutput8446);
 
    



Result:

Logical NOT

The code demonstrates how the logical NOT operator is utilized to verify if it is not raining, suggesting “Go for a stroll” since it’s not raining; otherwise, it will recommend “Remain indoors”.

Hierarchy and Associativity of Logical Operators in C++

The hierarchy defines the sequence in which different operators are assessed in an expression, and the associativity specifies the order in which the operator is evaluated when multiple operators share the same hierarchy. 

The hierarchy level and associativity of the logical operators are:

OperatorHierarchyAssociativity
!HighestRight to Left
&&MiddleLeft to Right
||LowestLogical OR

Short-Circuit Evaluation of Logical Operators in C++

A short-circuit evaluation of logical operators refers to observing the behavior of these operators. In essence, C++ halts evaluation as soon as the outcome is determined. This evaluation principally applies to logical AND(&&) and logical OR(||) operators.

1. Short-Circuit Evaluation of Logical AND (&&) in C++

Short-circuit evaluation: If the first operand is false, the entire expression becomes false, hence there is no necessity to assess the second operand.

Example:

Cpp
Code Duplicated!

"); jQuery(".maineditor51475 .code-editor-output").show(); jQuery("#runBtn51475 i.run-code").hide(); } }); }

function closeoutput51475() { var code = editor51475.getSession().getValue(); jQuery(".maineditor51475 .code-editor-output").hide(); }

// Link buttons to event listeners document.getElementById("copyBtn51475").addEventListener("click", copyCodeToClipboard51475); document.getElementById("runBtn51475").addEventListener("click", runCode51475); document.getElementById("closeoutputBtn51475").addEventListener("click", closeoutput51475);

Output:

Short-Circuit Evaluation of Logical AND

This code demonstrates that because x != 0 is false, there is no necessity to evaluate the subsequent condition, as the outcome will invariably be false.

2. Short-Circuit Evaluation of Logical OR (||) in C++

Short-circuit evaluation: If the first operand evaluates to true, the entire expression automatically results in true, negating the need to verify the second operand.

Example:

Cpp

Code Copied!

var isMobile = window.innerWidth ");

editor99419.setValue(decodedContent); // Initialize the default content editor99419.clearSelection();

editor99419.setOptions({ maxLines: Infinity });

function decodeHTML99419(input) { var doc = new DOMParser().parseFromString(input, "text/html"); return doc.documentElement.textContent; }

// Function to duplicate code to clipboard function copyCodeToClipboard99419() { const code = editor99419.getValue(); // Retrieve code from the editor navigator.clipboard.writeText(code).then(() => { // alert("Code copied to clipboard!"); jQuery(".maineditor99419 .copymessage").show(); setTimeout(function() { jQuery(".maineditor99419 .copymessage").hide(); }, 2000); }).catch(err => { console.error("Error copying code: ", err); }); }

function runCode99419() { var code = editor99419.getSession().getValue();

jQuery("#runBtn99419 i.run-code").show(); jQuery(".output-tab").click();

jQuery.ajax({ url: "https://intellipaat.com/blog/wp-admin/admin-ajax.php", type: "post", data: { language: "cpp", code: code, cmd_line_args: "", variablenames: "", action: "compilerajax" }, success: function(response) { var myArray = response.split("~"); var data = myArray[1];

jQuery(".output99419").html("

" + data + "

"); jQuery(".maineditor99419 .code-editor-output").show(); jQuery("#runBtn99419 i.run-code").hide(); } }); }

function closeoutput99419() { var code = editor99419.getSession().getValue(); jQuery(".maineditor99419 .code-editor-output").hide(); }

// Link buttons to event listeners document.getElementById("copyBtn99419").addEventListener("click", copyCodeToClipboard99419); document.getElementById("runBtn99419").addEventListener("click", runCode99419); document.getElementById("closeoutputBtn99419").addEventListener("click", closeoutput99419);

Output:

Short-Circuit Evaluation of Logical OR

This code illustrates that the logical OR operator behaves such that x == 0 yields true, rendering any assessment of the second condition unnecessary, as the outcome will inevitably be true.

Bitwise Operators vs Logical Operators

``````html
class="wp-block-table table-responsive">
Characteristic Bitwise Operators Logical Operators
Purpose Modifying bits of information Assessing Boolean logic
Type of Operands Operates on integers (int, char, etc.) Operates on Boolean expressions
Symbols &, |, ^, ~, <<, >> &&, ||, !
Output Integer output Boolean output (true or false)
Short-Circuit Functionality No short-circuit functionality Supports short-circuit functionality
Evaluation Framework Bit-level Logical condition

Summary

In C++, logical operators are crucial for making decisions by evaluating expressions that yield Boolean results. These operators are instrumental in guiding program execution in constructs such as if, while, and for loops. Thus, by comprehending their behavior, precedence, associativity, and distinctions from bitwise operators, you can effectively craft C++ programs utilizing logical operators.

Common Questions – Logical Operators in C++

Q1. What are the purposes of logical operators in C++?

Logical operators are utilized to assess conditions and produce true or false outcomes.

Q2. What does short-circuiting mean in logical operators?

Short-circuiting is a method that bypasses evaluating the second condition if the outcome is already decided by the first.

Q3. What is the difference between && and &?

The distinction between && and & is that && signifies logical AND (Boolean), while & represents bitwise AND (binary).

Q4. Can logical operators function with non-Boolean values?

Indeed, non-zero is regarded as true and zero as false.

Q5. Which logical operator holds the top precedence?

The Logical NOT operator (!) possesses the highest precedence.

The article Logical Operators in C++ was first published on Intellipaat Blog.

```


Leave a Reply

Your email address will not be published. Required fields are marked *

Share This