0% found this document useful (0 votes)
50 views3 pages

B (Comp)

The document contains 14 code snippets with questions about the output or errors. The summaries are: 1. The first code sample outputs "00131" because the logical AND and OR operators evaluate left to right, setting m=1. 2. The second sample outputs "12" because a character pointer takes 2 bytes to store the address and a character takes 1 byte. 3. The third sample outputs "three" because the default case can be anywhere and the switch matches case 3. 4. The fourth sample outputs "fff0" because -1 in binary is all 1s and left shifting by 4 places fills the lowest 4 bits with 0s.

Uploaded by

Nishit_Kothari
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views3 pages

B (Comp)

The document contains 14 code snippets with questions about the output or errors. The summaries are: 1. The first code sample outputs "00131" because the logical AND and OR operators evaluate left to right, setting m=1. 2. The second sample outputs "12" because a character pointer takes 2 bytes to store the address and a character takes 1 byte. 3. The third sample outputs "three" because the default case can be anywhere and the switch matches case 3. 4. The fourth sample outputs "fff0" because -1 in binary is all 1s and left shifting by 4 places fills the lowest 4 bits with 0s.

Uploaded by

Nishit_Kothari
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

Predict the output or error(s) for the following:

7. main()
{
int i=-1,j=-1,k=0,l=2,m;

m=i++&&j++&&k++||l++;

printf("%d %d %d %d %d",i,j,k,l,m);}

Answer:
00131

Explanation :
Logical operations always give a result of 1 or 0 . And also the logical AND (&&)
operator has higher priority over the logical OR (||) operator. So the expression
‘i++ && j++ && k++’ is executed first. The result of this expression is 0 (-1 &&
-1 && 0 = 0). Now the expression is 0 || 2 which evaluates to 1 (because OR
operator always gives 1 except for ‘0 || 0’ combination- for which it gives 0). So
the value of m is 1. The values of other variables are also incremented by 1.

8. main()
{
char *p;
printf("%d %d ",sizeof(*p),sizeof(p));
}

Answer:
12

Explanation:
The sizeof() operator gives the number of bytes taken by its operand. P is a
character pointer, which needs one byte for storing its value (a character). Hence
sizeof(*p) gives a value of 1. Since it needs two bytes to store the address of the
character pointer sizeof(p) gives 2.

9. main()
{
int i=3;
switch(i)
{
default:printf("zero");
case 1: printf("one");
break;
case 2:printf("two");
break;
case 3: printf("three");
break;
}
}

Answer :
three
Explanation :
The default case can be placed anywhere inside the loop. It is executed only
when all other cases doesn't match.

10. main()
{
printf("%x",-1<<4);
}

Answer:
fff0

Explanation :
-1 is internally represented as all 1's. When left shifted four times the least
significant 4 bits are filled with 0's.The %x format specifier specifies that the
integer value be printed as a hexadecimal value.

11. main()
{
char string[]="Hello World";
display(string);
}
void display(char *string)
{
printf("%s",string);
}

Answer:
Compiler Error : Type mismatch in redeclaration of function display

Explanation :
In third line, when the function display is encountered, the compiler doesn't know
anything about the function display. It assumes the arguments and return types
to be integers, (which is the default type). When it sees the actual function
display, the arguments and type contradicts with what it has assumed
previously. Hence a compile time error occurs.

12. main()
{
int c=- -2;
printf("c=%d",c);
}

Answer:
c=2;

Explanation:
Here unary minus (or negation) operator is used twice. Same maths rules
applies, ie. minus * minus= plus.
Note:
However you cannot give like --2. Because -- operator can only be applied to
variables as a decrement operator (eg., i--). 2 is a constant and not a variable.

13. #define int char


main()
{
int i=65;
printf("sizeof(i)=%d",sizeof(i));
}

Answer:
sizeof(i)=1

Explanation:
Since the #define replaces the string int by the macro char

14. main()
{
int i=10;
i=!i>14;
Printf ("i=%d",i);
}

Answer:
i=0

Explanation:
In the expression !i>14 , NOT (!) operator has more precedence than ‘ >’
symbol. ! is a unary logical operator. !i (!10) is 0 (not of true is false). 0>14 is
false (zero).

You might also like