#include<stdio.h>
int main(){
float a=0.7;d
if(a<0.7){
printf("C");
}
else{
printf("C++");
}
return 0;
}
0.7 is double constant (Default). Its binary value is written in 64 bit.
Binary value of 0.7 = (0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 )
Now here variable a is a floating point variable while 0.7 is double constant. So variable a will contain only 32 bit value i.e.
a = 0.1011 0011 0011 0011 0011 0011 0011 0011 while
0.7 = 0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011....
It is obvious a < 0.7
2.Rule :- ++ is pre increment operator so in any arithmetic expression it first increment the value of variable by one in whole expression then starts assigning the final value of variable in the expression.
Compiler will treat this expression j = ++i+++i+++i; as
i = ++i + ++i + ++i;
Initial value of i = 5 due to three pre increment operator final value of i=8.
Now final value of i i.e. 8 will assigned to each variable as shown in the following figure:
Since assignment operator (=) has more precedence than comma operator .So = operator will be evaluated first than comma operator. In the following expression
int main(){
float a=0.7;d
if(a<0.7){
printf("C");
}
else{
printf("C++");
}
return 0;
}
0.7 is double constant (Default). Its binary value is written in 64 bit.
Binary value of 0.7 = (0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 )
Now here variable a is a floating point variable while 0.7 is double constant. So variable a will contain only 32 bit value i.e.
a = 0.1011 0011 0011 0011 0011 0011 0011 0011 while
0.7 = 0.1011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011....
It is obvious a < 0.7
2.Rule :- ++ is pre increment operator so in any arithmetic expression it first increment the value of variable by one in whole expression then starts assigning the final value of variable in the expression.
Compiler will treat this expression j = ++i+++i+++i; as
i = ++i + ++i + ++i;
Initial value of i = 5 due to three pre increment operator final value of i=8.
Now final value of i i.e. 8 will assigned to each variable as shown in the following figure:
So, j=8+8+8
j=24 and
i=8
3.#include<stdio.h>
void main(){
int x;
x=10,20,30;
printf("%d",x);
return 0;
}
void main(){
int x;
x=10,20,30;
printf("%d",x);
return 0;
}
Precedence table:
Operator
|
Precedence
|
Associative
|
=
|
More than ,
|
Right to left
|
,
|
Least
|
Left to right
|
Since assignment operator (=) has more precedence than comma operator .So = operator will be evaluated first than comma operator. In the following expression
x = 10, 20, 30
First 10 will be assigned to
x then comma operator will be evaluated.
4.
#include<stdio.h>
int main(){
int a;
a=015
+ 0x71 +5;
printf("%d",a);
return 0;
}
015 is octal number its decimal equivalent is = 5 * 8 ^ 0 + 1 * 8 ^ 1 = 5 + 8 =
13
(int)a = 45; is equivalent to
3456 = 45 ( Here 3456 in any garbage value of int(a)).
0x71 is hexadecimal number
(0x is symbol of hexadecimal) its decimal equivalent is = 1 * 16 ^ 0 + 7 * 16 ^
1 = 1 + 112 = 113
So, a = 13 + 113 + 5 = 131
5.
#include<stdio.h>
int main(){
float a;
(int)a= 45;
printf("%d,a);
return 0;
}
After performing any operation
on operand it always return some constant value.
(int) i.e. type casting
operator is not exception for this. (int) a will return one constant value and
we cannot assign any constant value to another constant value in c.
(int)a = 45; is equivalent to
3456 = 45 ( Here 3456 in any garbage value of int(a)).
No comments:
Post a Comment