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
What is a null pointer assignment error? What are bus errors, memory faults, and core dumps?
explain what is fifo?
What is a scope resolution operator in c?
Do you know the use of fflush() function?
What are the different types of pointers used in c language?
What is logical error?
What are keywords in c with examples?
Write a C/C++ program to add a user to MySQL. The user should be permitted to only "INSERT" into the given database.
Simplify the program segment if X = B then C ← true else C ← false
What is use of null pointer in c?
How arrays can be passed to a user defined function
write an interactive C program that will encode or decode a line of text.To encode a line of text,proceed as follows. 1.convert each character,including blank spaces,to its ASCII equivalent. 2.Generate a positive random integer.add this integer to the ASCII equivalent of each character.The same random integer will be used for the entire line of text. 3.Suppose that N1 represents the lowest permissible value in the ASCII code,and N2 represents the highest permissible value.If the number obtained in step 2 above(i.e.,the original ASCII equivalent plus the random integer)exceeds N2,then subtract the largest possible multiple of N2 from this number,and add the remainder to N1.Hence the encoded number will always fall between N1 and N2,and will therefore always represent some ASCII character. 4.Dislay the characters that correspond to the encoded ASCII values. The procedure is reversed when decoding a line of text.Be certain,however,that the same random number is used in decodingas was used in encoding.
What is the difference between #include
what is stack , heap ,code segment,and data segment
int i=3; this declaration tells the C compiler to a) reserve space in memory to hold the integer value b) associate the name i with this memory location c) store the value 3 at this location d) all the above