C Programming - Expressions - Discussion
#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;
}
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
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.
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.
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".
The right answer is: d) none of above.
There is no "\n" and " " in the code.
Please explain this.
I can't understand this.