Why is passing (!NULL) in if-else condition true in C?

if else statement c++
if statement
if-else in c
if else c#
ternary operator
if-else in c w3schools
if-else statement in c programming
javascript if else shorthand

In these lines of code,

void main()
{
   if(!NULL)
     {
       printf("one.");
     }
   else
     {
       printf("two");
     }
}

the output is one. Why is that? Why is !NULL true?

From C Standard#6.3.2.3p3 [emphasis added]

3 An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.66) If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function.

.... ....

66) The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.19.

From C Standard#6.5.3.3p5

5 The result of the logical negation operator ! is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int. The expression !E is equivalent to (0==E).

So, this statement

if(!NULL)

is equivalent to

if (0==NULL)

0==NULL is evaluated to true. Hence, you are getting output one.


Additional:

The void return type of main() is not as per standard. Instead, you should use int as return type of main().

Conditional branching: if, '?', Use if-else statements in C++ to control conditional branching. true; a non-null pointer,; any non-zero arithmetic value, or; a class type that defines Control passes from the if statement to the next statement in the program� if-else Statement (C++) 07/20/2019; 2 minutes to read +2; In this article. Controls conditional branching. Statements in the if-block are executed only if the if-expression evaluates to a non-zero value (or true). If the value of expression is nonzero, statement1 and any other statements in the block are executed and the else-block, if present

NULL is the pointer equivalent of 0. 0 is false in C and any other non-zero value is positive.

Hence if !(not operator) is applied to NULL(false), it implies that !NULL is true.

So the if condition is satisfied as true and 'one.' is printed.

if-else Statement (C++), The most basic kind of conditional branch in C++ is the if statement. If the expression evaluates to true (non-zero), the statement executes. For example, to calculate a square root, the value passed to the square root function should A statement with no body is called a null statement, and it is declared by using a single� if-else (C# Reference) 07/20/2015; 5 minutes to read +4; In this article. An if statement identifies which statement to run based on the value of a Boolean expression. In the following example, the bool variable condition is set to true and then checked in the if statement.

In short :-

According to C coding standards ,

Non-Zero value is equivalent to TRUE Zero & NULL are equivalent to FALSE

Hence, (! NULL) is equivalent to TRUE. So, if block is executing and one. is printed.

5.2 — If statements, C programming language assumes any non-zero and non-null values as true, and if it is either zero or null, then it is assumed as false value. Flow Diagram. C if. .. 7 Why is passing (!NULL) in if-else condition true in C? Mar 7 '19. 7 Is a derived class considered a member of the base class? May 2.

C - ifelse statement, The boolean expression after the if statement is called the condition. if True: # This is always true pass # so this is always executed, but it does nothing elif choice == 'b': function_b() elif choice == 'c': function_c() else: print "Invalid choice. ". A number 0, an empty string "", null, undefined, and NaN all become false. Because of that they are called “falsy” values. Other values become true, so they are called “truthy”. So, the code under this condition would never execute:

4. Conditionals — How to Think Like a Computer Scientist: Learning , df <- tibble::tibble( a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10) ) df$ a <- (df$a 1, nchar(prefix)) == prefix } f2 <- function(x) { if (length(x) <= 1) return( NULL) if (condition) { # code executed when condition is TRUE } else { # code With transformations, an object is passed to the function's first argument and a � Conditional operators return one value if condition is true and returns another value is condition is false. Increment/decrement operators These operators are used to either increase or decrease the value of the variable by one.

19 Functions, $a xor $b, Xor, TRUE if either $a or $b is TRUE , but not both. a default value, one can now use the Null Coalescing Operator (PHP 7). for the ternary operator and only passing two values. doesn't work because return is not an expression, it's a statement. if return c( a( true ) or b( true ) ); // Output: Expression true. The if-else Statement. The simple if statement covers the cases where we have a fragment of code that should be executed depending on a condition. If we have a situation where we have two possible actions, and we want to do one or the other, depending on a given condition, we use the if – else statement.