value = 0xabcd;
for (loop = 1; (value >> 1) & 1 | loop & 1; loop++) {
foo();
if (loop & 1)
value >>= 1;
}
how many times is foo() executed?
Answer Posted / adam
It is 5, as stated... anybody can figure that out by just compiling the code. I
doubt that guy actually knows why.
This problem is heavy on bitwise operations, so you'll need to convert the
numbers into binary. The 0xABCD = 10, 11, 12, 13 = 1010 1011 1100
1101. Now make a table to hold the binary values of loop and value on each
iteration and walk through the code. Notice that "value" is shifted every other
iteration.
At the start of the 6th iteration, the value of "value" is 1010101111001 and
the "loop" is obviously 110. This makes the for-loop check:
((value >> 1) & 1) | (110 & 1)
(101010111100 & 1) | (110 & 1)
0 | 0
0
And it exits the loop at this point.
| Is This Answer Correct ? | 2 Yes | 0 No |
Post New Answer View All Answers
write a programming in c to find the sum of all elements in an array through function.
What is clrscr in c?
What are pointers? What are stacks and queues?
Explain the difference between null pointer and void pointer.
Is it valid to address one element beyond the end of an array?
Write a program in c to replace any vowel in a string with z?
Explain why c is faster than c++?
Explain low-order bytes.
What is the difference between near, far and huge pointers?
what are enumerations in C
What is a structural principle?
int i[2], j; int *pi;i[0] = 1; i[1] = 5; pi = i; j = *pi + 1 + *(pi + 1)Value of j after execution of the above statements will be a) 7 b) 6 c) 4 d) pointer
Study the following C program :call_me (myvar)int myvar;{ myvar +- 5; }main(){int myvar;myvar = 3;call_me(myvar);printf("%d ",myvar);What will be printed a) 3 b) 5 c) 8 d) symbol
Where define directive used?
What is the size of enum in bytes?