Olá, estou com uma dúvida referente a saída deste código:
#include <stdio.h>
#include <stdlib.h>
typedef union { //uniao compartilha os dados
char A[2];
struct xar //para acessar nome_da_variavel_da_estrutura.nome_do_elemento
//Quando uma variável de estrutura é declarada, o compilador C aloca automaticamente memória suficiente para acomodar todos os seus membros.
{
char B; //elemento da estrutura
char C;
}carac; // nome da variavel da estrutura
} PosCompType;
int main()
{
PosCompType Dado;
Dado.A[0] = 'a';
Dado.A[1] = 'b';
Dado.carac.B = 'c';
Dado.carac.C = 'd';
printf("%c %c %c %c\n", Dado.A[0], Dado.A[1], Dado.carac.B, Dado.carac.C);
return 0;
}
No console o resultado do printf não deveria ser abcd?
Por que esta saindo cdcd? Será que é pelo fato de a união compartilhar memória?
Pergunta
qisdo
Olá, estou com uma dúvida referente a saída deste código:
No console o resultado do printf não deveria ser abcd?
Por que esta saindo cdcd? Será que é pelo fato de a união compartilhar memória?
Troquei a ordem para:
E o resultado sai abab, indiciando que os últimos valores corrompem os primeiros.
Editado por qisdoAlguma explicação?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.