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