C Programming - Expressions - Discussion

14. 

What will be the output of the program?

#include<stdio.h>
int main()
{
    char ch;
    ch = 'A';
    printf("The letter is");
    printf("%c", ch >= 'A' && ch <= 'Z' ? ch + 'a' - 'A':ch);
    printf("Now the letter is");
    printf("%c\n", ch >= 'A' && ch <= 'Z' ? ch : ch + 'a' - 'A');
    return 0;
}

[A]. The letter is a
Now the letter is A
[B]. The letter is A
Now the letter is a
[C]. Error
[D]. None of above

Answer: Option A

Explanation:

Step 1: char ch; ch = 'A'; here variable ch is declared as an character type an initialized to 'A'.

Step 2: printf("The letter is"); It prints "The letter is".

Step 3: printf("%c", ch >= 'A' && ch <= 'Z' ? ch + 'a' - 'A':ch);

The ASCII value of 'A' is 65 and 'a' is 97.

Here

=> ('A' >= 'A' && 'A' <= 'Z') ? (A + 'a' - 'A'):('A')

=> (TRUE && TRUE) ? (65 + 97 - 65) : ('A')

=> (TRUE) ? (97): ('A')

In printf the format specifier is '%c'. Hence prints 97 as 'a'.

Step 4: printf("Now the letter is"); It prints "Now the letter is".

Step 5: printf("%c\n", ch >= 'A' && ch <= 'Z' ? ch : ch + 'a' - 'A');

Here => ('A' >= 'A' && 'A' <= 'Z') ? ('A') : (A + 'a' - 'A')

=> (TRUE && TRUE) ? ('A') :(65 + 97 - 65)

=> (TRUE) ? ('A') : (97)

It prints 'A'

Hence the output is

The letter is a
Now the letter is A


Sumit Rawal said: (Aug 28, 2011)  
Its so confusing. Please expain it in more detail.

Pedro said: (Jan 22, 2014)  
The actual answer is:

The letter isaNow the letter isA.

There is no space after "The letter is".
There is no \n.
There is no space again after "Now the letter is".

Pradip said: (Dec 15, 2016)  
How that A comes in the last line?Explain me.

Burak said: (Jan 25, 2017)  
You are right @Pedro.

The right answer is: d) none of above.

There is no "\n" and " " in the code.

Chandra said: (Jul 2, 2017)  
'A' <= 'Z' ;is this true or false.
Please explain this.
I can't understand this.

Ratan Dubey said: (Jul 8, 2017)  
The exact o/p is:-
The letter isaNow the letter is A.

@Chandra
'A' <= 'Z' is true.

Here in this program, the compiler will proceed in ASCII values of the given letters 'A' and 'Z' has 65 and 91 ASCII value respectively so Simplifying it, as 65<=91 and that is true so the statement is true.

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.