C Programming - Expressions - Discussion

Discussion Forum : Expressions - Find Output of Program (Q.No. 14)
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;
}
The letter is a
Now the letter is A
The letter is A
Now the letter is a
Error
None of above
Answer: Option
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

Discussion:
11 comments Page 1 of 2.

Sameer said:   7 years ago
The answer should be none of the above, as there is no \n.
(2)

Noel Nosse said:   7 years ago
A conditional operator is a ternary operator, that is, it works on 3 operands.

Conditional Operator Syntax.

conditionalExpression? expression1 : expression2
The conditionaloperator works as follows:

The first expression conditional Expression is evaluated first. This expression evaluates to 1 if it's true and evaluates to 0 if it's false.
If conditional Expression is true, expression1 is evaluated.
If the conditional expression is false, expression2 is evaluated.

Example:

#include <stdio.h>
int main(){
char February;
int days;
printf("If this year is leap year, enter 1. If not enter any integer: ");
scanf("%c",&February);

// If test condition (February == 'l') is true, days equal to 29.
// If test condition (February =='l') is false, days equal to 28.
days = (February == '1') ? 29 : 28;

printf("Number of days in February = %d",days);
return 0;
}

Output

If this year is a leap year, enter 1. If not enter an integer: 1
Number of days in February = 29.
(1)

Ajay007 said:   8 years ago
The value of ch is not updated in second case.

Mridul Sachan said:   8 years ago
Answer should be None of the above.
(1)

Kamble said:   8 years ago
The answer should be "none of above " since the new line character "\n " is given in 4th last printf () statement.
(1)

Ratan dubey said:   8 years ago
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.

Chandra said:   8 years ago
'A' <= 'Z' ;is this true or false.
Please explain this.
I can't understand this.

Burak said:   9 years ago
You are right @Pedro.

The right answer is: d) none of above.

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

Pradip said:   9 years ago
How that A comes in the last line?Explain me.

Pedro said:   1 decade ago
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".


Post your comments here:

Your comments will be displayed after verification.