Consider the following ANSI C program.
#include <stdio.h>
int main()
{
int i, j, count;
count = 0;
i = 0;
for (j = -3; j <= 3; j++)
{
if ((j >= 0) && (i++))
count = count + j;
}
count = count + i;
printf("%d", count);
return 0;
} Which one of the following options is correct?
Step 1: Initial values.
Initially,
\[
i = 0, count = 0
\]
The loop runs for \(j = -3\) to \(j = 3\).
Step 2: Understanding the if-condition.
The condition is:
\[
(j \ge 0) \ && \ (i++)
\]
The logical AND operator uses short-circuit evaluation. Hence, \(i++\) is executed only when \(j \ge 0\).
Step 3: Loop-wise evaluation.
For \(j = -3, -2, -1\):
\[
j \ge 0 \text{ is false } $\Rightarrow$ i++ \text{ is NOT executed}
\]
So, \(i = 0\), \(count = 0\).
For \(j = 0\):
\[
j \ge 0 \text{ is true, } i++ = 0 \ (\text{false})
\]
Condition fails, but \(i\) becomes \(1\).
\(count\) unchanged.
For \(j = 1\):
\[
i++ = 1 \ (\text{true})
\]
Condition true, so:
\[
count = count + 1 = 1, i = 2
\]
For \(j = 2\):
\[
i++ = 2 \ (\text{true})
\]
\[
count = 1 + 2 = 3, i = 3
\]
For \(j = 3\):
\[
i++ = 3 \ (\text{true})
\]
\[
count = 3 + 3 = 6, i = 4
\]
Step 4: Final computation.
After the loop:
\[
count = count + i = 6 + 4 = 10
\]
Step 5: Conclusion.
The program compiles successfully and prints:
\[
10
\]
Final Answer: (B)
Consider the following code:
main() {
int x = 126, y = 105;
{
if (x > y)
x = x - y;
else
y = y - x;
}
while (x != y)
printf("%d", x);
}
Consider the following code:
int a;
int arr[] = {30, 50, 10};
int *ptr = arr[10] + 1;
a = *ptr;
(*ptr)++;
ptr = ptr + 1;
printf("%d", a + arr[1] + *ptr);
Consider the following code:
main() {
int x = 126, y = 105;
{
if (x > y)
x = x - y;
else
y = y - x;
}
while (x != y)
printf("%d", x);
}
Given the following cache parameters:
\[ \begin{array}{|c|c|} \hline \textbf{Tag} & 4 \, \text{bits} \\ \textbf{Index} & 12 \, \text{bits} \\ \textbf{Block Size} & 1 \, \text{byte} \\ \hline \end{array} \]Find the size of the main memory and the size of the cache memory.
Consider the following process information for Shortest Remaining Time First (SRTF) scheduling:
\[ \begin{array}{|c|c|c|} \hline \textbf{Process} & \textbf{Arrival Time (AT)} & \textbf{Burst Time (BT)} \\ \hline P1 & 0 & 10 \\ P2 & 1 & 13 \\ P3 & 2 & 6 \\ P4 & 8 & 9 \\ \hline \end{array} \]Find the turnaround time for each process.