The Whole File:-C Questions with Explanations
1. void main()
int const * p=5;
Compiler error: Cannot modify a constant value.
p is a pointer to a “constant integer”. But we tried to change the value
of the “constant integer”.
char s[ ]=”man”;
for(i=0;s[ i ];i++)
printf(“\n%c%c%c%c”,s[ i ],*(s+i),*(i+s),i[s]);
s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same
idea. Generally array name is the base address for that array. Here s is the base
address. i is the index number/displacement from the base address. So, indirecting it
with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].
float me = 1.1;
double you = 1.1;
printf(“I love U”);
printf(“I hate U”);
I hate U
For floating point numbers (float, double, long double) the values
cannot be predicted exactly. Depending on the number of bytes, the precession with
of the value represented varies. Float takes 4 bytes and long double takes 10 bytes.
So float stores 0.9 with less precision than long double.
Rule of Thumb:
Never compare or at-least be cautious when using floating point
numbers with relational operators (== , >, <, <=, >=,!= ) .
static int var = 5;
5 4 3 2 1
When static storage class is given, it is initialized once. The change in
the value of a static variable is retained even between the function calls. Main is also
treated like any other ordinary function, which can be called recursively.