Considere o seguinte programa escrito na sintaxe da linguagem de programação C:
int xpto (int a, int b)
{
b = b + a;
a = b - a;
return b;
}
void main()
int v [ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i = 2;
int x = xpto(v[i], i);
printf("%d", x + i);
}Com base no programa apresentado, avalie as assertivas a seguir:
A análise permite concluir que:
a. apenas as assertivas I e II estão corretas.
b. apenas as assertivas I e III estão corretas.
c. apenas as assertivas II e III estão corretas.
d. apenas as assertivas II e IV estão corretas.
e. apenas as assertivas III e IV estão corretas.
I. Caso os parâmetros sejam passados por valor, o valor impresso será 4.
| Variável | Valor |
|---|---|
| v[0] | 1 |
| v[1] | 2 |
| v[2] | 3 |
| v[3] | 4 |
| v[4] | 5 |
| v[5] | 6 |
| v[6] | 7 |
| v[7] | 8 |
| v[8] | 9 |
| i | 2 |
| x | 5 |
| a | 3 2 |
| b | 2 5 |
printf("%d", x + i); // 5 + 2 = 7
II. Caso os parâmetros sejam passados por referência, o valor impresso será 10.
| Variável | Valor |
|---|---|
| v[0] | 1 |
| v[1] | 2 |
| v[2] | 3 2 |
| v[3] | 4 |
| v[4] | 5 |
| v[5] | 6 |
| v[6] | 7 |
| v[7] | 8 |
| v[8] | 9 |
| i | 2 5 |
| x | 5 |
| a | v[2] |
| b | i |
printf("%d", x + i); // 5 + 5 = 10
III. Caso os parâmetros sejam passados por nome, o valor impresso será 10.
| Variável | Valor |
|---|---|
| v[0] | 1 |
| v[1] | 2 |
| v[2] | 2 |
| v[3] | 4 |
| v[4] | 5 |
| v[5] | 6 -1 |
| v[6] | 7 |
| v[7] | 8 |
| v[8] | 9 |
| i | 2 5 |
| x | 5 |
| a | v[i] |
| b | i |
printf("%d", x + i); // 5 + 5 = 10
IV. Caso os parâmetros sejam passados por valor-resultado, o valor impresso será 7.
| Variável | Valor |
|---|---|
| v[0] | 1 |
| v[1] | 2 |
| v[2] | 3 2 |
| v[3] | 4 |
| v[4] | 5 |
| v[5] | 6 |
| v[6] | 7 |
| v[7] | 8 |
| v[8] | 9 |
| i | 2 5 |
| x | 5 |
| a | 3 2 (v[2]) |
| b | 2 5 (i) |
printf("%d", x + i); // 5 + 5 = 10
a. apenas as assertivas I e II estão corretas.
b. apenas as assertivas I e III estão corretas.
c. apenas as assertivas II e III estão corretas.
d. apenas as assertivas II e IV estão corretas.
e. apenas as assertivas III e IV estão corretas.