Expressions - Programming

Q1:

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

ANS:A - The letter is a
Now the letter is A

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