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?
Question
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.
Edited by qisdoAlguma explicação?
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.