• Matéria: Informática
  • Autor: PauloEdu01
  • Perguntado 3 anos atrás

Seja o seguinte programa:
int main ( )
{
int i = 2, i = 4;
int *p, *q;
p = &i;
q = &j;
printf ( " %d %d %d %d \n" , p == &i, *p -*q, 3* - *p, *q/(*p)+2 )
}
Qual será a saída deste programa na tela?

A - 0, -2, -6, -4
B - 0, 8, 6, 2
C - 1, 2, 6, 4
D - 1, -2, -6, 4
E - nenhuma das alternativas anteriores


PauloEdu01: D - 1, -2, -6, 4
PauloEdu01: resposta correta: D - 1, -2, -6, 4
Anônimo: Da forma que está escrito, o programa tem erro de sintaxe e de atribuição, e por isso o código não compila. A resposta não pode ser a D.
PauloEdu01: Concordo. Mas é a resposta que o sistema considerou como correta na atividade. Valeu as explicações adicionais! Seguimos forte na luta

Respostas

respondido por: Gabrielps014
0

Resposta:

Olá, tem alguns erros no código:

Primeiro ==> uso de identificador não declarado 'j'  q = & j;

Segundo ==> é preciso colocar ponto e virgula no final da função printf

Terceiro ==> redefinição de 'i'

Por esse motivo acredito que a resposta correta seja a alternativa, (E) nenhuma das anteriores, porque o código irá retornar um erro.

Para que o programa funcione podemos fazer o seguinte:

int main ( )

{

int i = 2;/*==> comentar a variável porque já foi atribuido um valor a ela , i = 4;*/

int *p, *q;

p = &i;

/*==> colocar em comentário //q = &j;

==> adicionar o ponto e vírgula no final do printf: */

printf ( " %d %d %d %d \n" , p == &i, *p -*q, 3* - *p, *q/(*p)+2 );

}

Agora que o programa funciona pois fizemos algumas alterações, temos o seguinte output:   1 1991643857 -6 -995821925

Perguntas similares