prof.: josé eustáquio rangel de queiroz [email protected] rangeldequeiroz@gmail
DESCRIPTION
Structs, Unions e. Enums em C e C++. Técnicas de Programação. Prof.: José Eustáquio Rangel de Queiroz [email protected] [email protected]. Carga Horária: 60 horas. Tópicos. Structs Unions Enums. Structs I. - PowerPoint PPT PresentationTRANSCRIPT
DSC/CCT/UFCGDSC/CCT/UFCG
{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
Carga Horária: 60 horasCarga Horária: 60 horas
Prof.: José Eustáquio Rangel de Queiroz
[email protected]@gmail.com
Prof.: José Eustáquio Rangel de Queiroz
[email protected]@gmail.com
2{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Structs Unions Enums
Structs Unions Enums
TópicosTópicos
3{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Arrays Exigência de todostodos os elementos do mesmomesmo tipo de dados
Fatos Necessidade de agrupamento de
informações envolvendo diferentesdiferentes tipos de dados Exemplo Lista de materiais de um
almoxarifado Inclusão do nome, especificação,
quantidade disponível e datas de entrada e de saída de cada item
Arrays Exigência de todostodos os elementos do mesmomesmo tipo de dados
Fatos Necessidade de agrupamento de
informações envolvendo diferentesdiferentes tipos de dados Exemplo Lista de materiais de um
almoxarifado Inclusão do nome, especificação,
quantidade disponível e datas de entrada e de saída de cada item
StructsStructs IStructsStructs I
4{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Fatos Possibilidade de estruturação de dados
em CC and C++C++ de modo a armazenar combinações de caracteres, inteiros, variáveis de ponto flutuante and e dados do tipo enumerado (enumenum) Uso de structsstructs
Fatos Possibilidade de estruturação de dados
em CC and C++C++ de modo a armazenar combinações de caracteres, inteiros, variáveis de ponto flutuante and e dados do tipo enumerado (enumenum) Uso de structsstructs
StructsStructs IIStructsStructs II
5{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructStruct Tipo derivado de dados composto de
membros associados a tipos de dados elementares ou derivados
StructStruct Única Armazenamento dos dados associados a
um objeto
Array de structsstructs Armazenamento dos dados associados a
vários objetos
StructStruct Tipo derivado de dados composto de
membros associados a tipos de dados elementares ou derivados
StructStruct Única Armazenamento dos dados associados a
um objeto
Array de structsstructs Armazenamento dos dados associados a
vários objetos
StructsStructs IIIStructsStructs III
6{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs IVStructsStructs IV
Declaração de Structs Structs Declaração de Structs Structs
SemSem Alocação de EspaçoAlocação de Espaço ComCom Alocação de EspaçoAlocação de Espaço
structstruct Exemplo01 Exemplo01{{ charchar nome[40] nome[40];; charchar espec[80] espec[80];; intint quant quant;;}} ;;
structstruct Exemplo01Exemplo01{{ charchar nome[40] nome[40];; charchar espec[80] espec[80];; intint quant quant;;}} Almoxarifado;Almoxarifado;
7{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs IVStructsStructs IV
Tipos de Dados definidos pelo Usuário (TypedefTypedef)
TypedefTypedef Facilidade de criação de sinônimos para
nomes de tipos de dados predefinidos
typedef int Quantidade;typedef int Quantidade;
(QuantidadeQuantidade torna-se sinônimo do tipo intint)
Quantidade q1, q2;Quantidade q1, q2;Quantidade quant[20];Quantidade quant[20];
Tipos de Dados definidos pelo Usuário (TypedefTypedef)
TypedefTypedef Facilidade de criação de sinônimos para
nomes de tipos de dados predefinidos
typedef int Quantidade;typedef int Quantidade;
(QuantidadeQuantidade torna-se sinônimo do tipo intint)
Quantidade q1, q2;Quantidade q1, q2;Quantidade quant[20];Quantidade quant[20];
8{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs VStructsStructs V
Typedef Typedef e Struct Struct Uso combinado Declaração de um
sinônimo (ou codinome) para uma structstruct
Typedef Typedef e Struct Struct Uso combinado Declaração de um
sinônimo (ou codinome) para uma structstruct
typedef struct typedef struct /* Definicao de uma estrutura *//* Definicao de uma estrutura */{{ int int num_item;num_item; char char nome_item[30];nome_item[30]; char char espec_item[60] ;espec_item[60] ;} } Estrutura;/* Codinome da struct */Estrutura;/* Codinome da struct */
Estrutura est1; /* Criação de uma variavel doEstrutura est1; /* Criação de uma variavel dotipo Estrutura */ tipo Estrutura */
9{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs VIStructsStructs VI
Acesso a membros de uma Struct Struct Uso do operador pontoponto (..)
EstruturaEstrutura..num_item;num_item;
Uso do operador setaseta (->->)
struct Estrutura *Apont = &num_item;struct Estrutura *Apont = &num_item; Apont Apont ->-> num_item; num_item;
(Equivalente a (*Apont)(*Apont)..num_item;num_item;)
Acesso a membros de uma Struct Struct Uso do operador pontoponto (..)
EstruturaEstrutura..num_item;num_item;
Uso do operador setaseta (->->)
struct Estrutura *Apont = &num_item;struct Estrutura *Apont = &num_item; Apont Apont ->-> num_item; num_item;
(Equivalente a (*Apont)(*Apont)..num_item;num_item;)
10{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs VIIStructsStructs VII
Exemplo 01 (1/2) Exemplo 01 (1/2)
#include <stdio.h> #include <stdio.h> struct struct TecProgTecProg /* Criacao de uma struct sem alocacao de espaco *//* Criacao de uma struct sem alocacao de espaco */ { long { long mat;mat; float float nota;nota; } ;} ;struct struct identidade /* Criacao de uma segunda struct que inclui aidentidade /* Criacao de uma segunda struct que inclui aprimeira */primeira */ { char { char nome[40];nome[40]; struct struct TecProg aluno;TecProg aluno; } ; } ;
11{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
StructsStructs VIIIStructsStructs VIII
Exemplo 01 (2/2) Exemplo 01 (2/2)
void main ( )void main ( ){{ struct struct identidade aluno1 = {“Alberto Pontes"},identidade aluno1 = {“Alberto Pontes"}, *apont = &aluno1 ;*apont = &aluno1 ;
aluno1.aluno.mat = 20411032;aluno1.aluno.mat = 20411032; aluno1.aluno.nota = 7.8 ;aluno1.aluno.nota = 7.8 ; printf printf ("%s %ld %f\n", aluno1.nome, aluno1.TecProg.id,("%s %ld %f\n", aluno1.nome, aluno1.TecProg.id, aluno1.TecProg.nota) ;aluno1.TecProg.nota) ; printf printf ("%s %ld %f\n", apont->nome, apont->aluno.id,("%s %ld %f\n", apont->nome, apont->aluno.id, apont->TecProg.nota) ;apont->TecProg.nota) ; return 0;return 0;} }
12{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions IUnionsUnions I
Union Union I
Declaração de um tipo de união e/ou de uma variável de um tipo de união
Sintaxe
union [etiqueta]union [etiqueta]{{
lista_de_membroslista_de_membros} [declaradores];} [declaradores];
Union Union I
Declaração de um tipo de união e/ou de uma variável de um tipo de união
Sintaxe
union [etiqueta]union [etiqueta]{{
lista_de_membroslista_de_membros} [declaradores];} [declaradores];
13{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions IIUnionsUnions II
Union Union II
Definição do tipo de dados pelo usuário
Possibilidade de armazenamento de valores de diferentes tipos em diferentes instantes do processamento
Similaridade com uma structstruct, exceto pelo fato de todostodos os membros ocuparem a mesmamesma locação de memória
Possibilidade de contenção de apenas apenas umum dos membros de cada vez
Tamanho Função do maior membro
Union Union II
Definição do tipo de dados pelo usuário
Possibilidade de armazenamento de valores de diferentes tipos em diferentes instantes do processamento
Similaridade com uma structstruct, exceto pelo fato de todostodos os membros ocuparem a mesmamesma locação de memória
Possibilidade de contenção de apenas apenas umum dos membros de cada vez
Tamanho Função do maior membro
14{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions IIIUnionsUnions III
Exemplo 02 Exemplo 02
union union Exemplo02 /* Declaracao de um tipo union */Exemplo02 /* Declaracao de um tipo union */{{ char char caractere;caractere; int int inteiro;inteiro; long long int_longo;int_longo; float float pto_flut;pto_flut; double double dupla_prec;dupla_prec;} } TipoUniao; /* Declaracao opcional da variavel union */TipoUniao; /* Declaracao opcional da variavel union */
15{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions IVUnionsUnions IV
Exemplo 03 Exemplo 03
typedef uniontypedef union {{ intint intval; intval; floatfloat realval; realval;} } inteiro_ou_real;inteiro_ou_real;
inteiro_ou_realinteiro_ou_real num; num;num.intval = 3; /* x como variavel int */num.intval = 3; /* x como variavel int */num.realval = 3.1416; /* x como variavel float sobrescrevenum.realval = 3.1416; /* x como variavel float sobrescreveo valor int */o valor int */
16{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions VUnionsUnions V Exemplo 04 - Combinação de unionunion e
struct struct (1/3) Exemplo 04 - Combinação de unionunion e
struct struct (1/3) union union situacaosituacao{{ int int col;col; char char grau[4];grau[4];}};;
struct struct selecaoselecao{{ long long inscr;inscr; float float nota;nota; union union situacao nivel;situacao nivel;}};;
struct struct identidadeidentidade{{ char char nome[40];nome[40]; struct struct selecao candidato;selecao candidato; }}; ;
17{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions VIUnionsUnions VI Exemplo 04 - Combinação de unionunion e
struct struct (2/3) Exemplo 04 - Combinação de unionunion e
struct struct (2/3) intint main( ) main( ){{ struct struct identidade cand2 = {“Álvaro Guedes"},identidade cand2 = {“Álvaro Guedes"}, *apont = &cand2 ;*apont = &cand2 ;
cand2. cand2. candidatocandidato.inscr = 20411038;.inscr = 20411038; cand2. cand2. candidatocandidato.nota = 5.7;.nota = 5.7; printf (printf (“Digite status do candidato (A ou R)\n"“Digite status do candidato (A ou R)\n"));; scanfscanf (("%c", &A_R"%c", &A_R));; ifif ((A_R == ‘A'A_R == ‘A')) {{ printfprintf ((“Digite colocacao (inteiro de 1 a 40)\n"“Digite colocacao (inteiro de 1 a 40)\n"));; scanfscanf (("%d", &cand2.candidato.nivel.col"%d", &cand2.candidato.nivel.col));; printfprintf (("%s eh nivel %d\n”, cand2.nome,"%s eh nivel %d\n”, cand2.nome, cand2.candidato.nivel.colcand2.candidato.nivel.col));; }} /* Fim do if */ /* Fim do if */
18{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
UnionsUnions VIIUnionsUnions VII Exemplo 04 - Combinação de unionunion e
struct struct (3/3) Exemplo 04 - Combinação de unionunion e
struct struct (3/3)
else else { printf ({ printf (“Digite o grau (Ms ou Gr\n"“Digite o grau (Ms ou Gr\n"));; scanf (scanf ("%s", &cand2.candidato.nivel.grau"%s", &cand2.candidato.nivel.grau));; printf (printf ("%s eh um %s candidato\n”,"%s eh um %s candidato\n”, cand2.nome , cand2.candidato.nivel.graucand2.nome , cand2.candidato.nivel.grau));; }} /* Fim do else */ /* Fim do else */ printf (printf ("%s %ld %f\n” , cand2.nome , cand2.candidato.id,"%s %ld %f\n” , cand2.nome , cand2.candidato.id, cand2.candidato.inscrcand2.candidato.inscr));; printfprintf (("%s%ld %f\n” , apont->nome , apont->candidato.id ,"%s%ld %f\n” , apont->nome , apont->candidato.id , apont->candidato.inscrapont->candidato.inscr));;}} /* Fim do programa */ /* Fim do programa */
19{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
EnumsEnums IEnumsEnums I
Enumeração I
Tipo de dado definido pelo usuário a partir da palavra-chave enumenum
Sintaxe
enum [etiqueta]enum [etiqueta]{{
lista_de_enumeradoreslista_de_enumeradores} [declarador];} [declarador];
Enumeração I
Tipo de dado definido pelo usuário a partir da palavra-chave enumenum
Sintaxe
enum [etiqueta]enum [etiqueta]{{
lista_de_enumeradoreslista_de_enumeradores} [declarador];} [declarador];
20{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
EnumsEnums IIEnumsEnums II Enumeração II
EtiquetaEtiqueta Uso indireto
Lista_de_enumeradores Lista_de_enumeradores Constantes simbólicas Valores inteiros de 00 a nn
Exemplo 05
enum dias {Segunda, Terca, enum dias {Segunda, Terca, Quarta};Quarta};
Criação de 33 constantes SegundaSegunda é associada ao valor 00 TercaTerca é associada a 11 QuartaQuarta é associada a 22
Enumeração II
EtiquetaEtiqueta Uso indireto
Lista_de_enumeradores Lista_de_enumeradores Constantes simbólicas Valores inteiros de 00 a nn
Exemplo 05
enum dias {Segunda, Terca, enum dias {Segunda, Terca, Quarta};Quarta};
Criação de 33 constantes SegundaSegunda é associada ao valor 00 TercaTerca é associada a 11 QuartaQuarta é associada a 22
21{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
EnumsEnums IIIEnumsEnums III Enumeração III
Lista_de_enumeradoresLista_de_enumeradores
Primeiro enumerador Atribuição do valor 00
Cada enumerador sucessivo Atribuição de um valor maiormaior do que o de seu predecessor
Possibilidade de especificação explícita de um valor para um enumerador particular
Enumeração III
Lista_de_enumeradoresLista_de_enumeradores
Primeiro enumerador Atribuição do valor 00
Cada enumerador sucessivo Atribuição de um valor maiormaior do que o de seu predecessor
Possibilidade de especificação explícita de um valor para um enumerador particular
22{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
EnumsEnums IVEnumsEnums IV Enumeração IV
Lista_de_enumeradoresLista_de_enumeradores
Enumeradores nãonão precisam estar associados a valores únicosúnicos
O nome de cadacada enumerador deve ser únicoúnico no escopo de definição da enumenum
A conversão de um inteiro para um enumerador requer um cast explícito
Os resultados nãonão são definidosdefinidos
Enumeração IV
Lista_de_enumeradoresLista_de_enumeradores
Enumeradores nãonão precisam estar associados a valores únicosúnicos
O nome de cadacada enumerador deve ser únicoúnico no escopo de definição da enumenum
A conversão de um inteiro para um enumerador requer um cast explícito
Os resultados nãonão são definidosdefinidos
23{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Exemplo 06 - Uso de tipos de dados enumerados para acesso aos itens de um array
Exemplo 06 - Uso de tipos de dados enumerados para acesso aos itens de um array
#include <stdio.h>#include <stdio.h>int main( )int main( ){{ int int Novembro[5][7]={{0,0,1,2,3,4,5},{6,7,8,9,10,11,12},Novembro[5][7]={{0,0,1,2,3,4,5},{6,7,8,9,10,11,12}, {13,14,15,16,17,18,19},{20,21,22,23,24,25,26},{13,14,15,16,17,18,19},{20,21,22,23,24,25,26}, {27,28,29,30,0,0,0}};{27,28,29,30,0,0,0}}; enum enum dias dias {{Domingo, Segunda, Terca, Quarta, Quinta, Sexta,Domingo, Segunda, Terca, Quarta, Quinta, Sexta, SabadoSabado}} enum enum semana semana {{semana01, semana02, semana03, semana04,semana01, semana02, semana03, semana04, semana05semana05}};;
printf (printf (“Quinta da primeira semana de Novembro eh dia %d\n",“Quinta da primeira semana de Novembro eh dia %d\n",Novembro [semana01][Quinta]Novembro [semana01][Quinta]););
}}
EnumsEnums VEnumsEnums V
24{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Structs Structs em C/ C++em C/ C++ IStructs Structs em C/ C++em C/ C++ I
CC C++C++Uso explícitoexplícito da palavra-chave structstruct para a declaração/ definição da estrutura
Similaridade com uma classe (classclass) com membros públicos (publicpublic) por definição
Uso desnecessáriodesnecessário da palavra-chave structstruct após a declaração/ definição do tipo
25{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Exemplo 07 Exemplo 07
struct struct INDIVIDUO // Declaracao do tipo struct INDIVIDUOINDIVIDUO // Declaracao do tipo struct INDIVIDUO{{ int int idade;idade; // Declaracao dos tipos dos membros// Declaracao dos tipos dos membros char char nome[40];nome[40]; float float altura;altura; float float peso;peso;} } membro_da_familia; // Definicao da variavel do tipo INDIVIDUOmembro_da_familia; // Definicao da variavel do tipo INDIVIDUO
struct struct INDIVIDUO pai; // Declaracao da estrutura em CINDIVIDUO pai; // Declaracao da estrutura em CINDIVIDUO mae, tio, prima; // Declaracao da estrutura em C++INDIVIDUO mae, tio, prima; // Declaracao da estrutura em C++
mae.altura = 1.69; // Atribuicao de valores aos membrosmae.altura = 1.69; // Atribuicao de valores aos membrospai.idade = 76;pai.idade = 76;prima.nome = {“Julia Lemos de Andrade”};prima.nome = {“Julia Lemos de Andrade”};tio.peso = 87;tio.peso = 87;
Structs Structs em C/ C++em C/ C++ IIStructs Structs em C/ C++em C/ C++ II
26{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Exemplo 08 (Inicialização) Exemplo 08 (Inicialização)
structstruct PONTO // Declaracao da estrutura PONTO PONTO // Declaracao da estrutura PONTO{{ intint x; // Definicao de membros da estrutura PONTO x; // Definicao de membros da estrutura PONTO intint y; y;}} alvo = {20, 40}; // Atribuicao dos valores x = 20, alvo = {20, 40}; // Atribuicao dos valores x = 20, // y = 40 ah variavel alvo// y = 40 ah variavel alvo
structstruct PONTO ponto1; // Declaracao de variavel do tipo PONTO PONTO ponto1; // Declaracao de variavel do tipo PONTO
structstruct FOCO // Declaracao do campo de bits FOCO FOCO // Declaracao do campo de bits FOCO{{ unsignedunsigned caractere: 8; // 00000000 ???????? caractere: 8; // 00000000 ???????? unsignedunsigned foreground: 3; // 00000??? 00000000 foreground: 3; // 00000??? 00000000 unsignedunsigned intensidade: 1; // 0000?000 00000000 intensidade: 1; // 0000?000 00000000 unsignedunsigned background: 3; // 0???0000 00000000 background: 3; // 0???0000 00000000 unsignedunsigned pisca: 1; // ?0000000 00000000 pisca: 1; // ?0000000 00000000}} tela[25][80]; // Array de campos de bits tela[25][80]; // Array de campos de bits
Structs Structs em C/ C++em C/ C++ IIIStructs Structs em C/ C++em C/ C++ III
27{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Unions Unions em C/ C++em C/ C++ IUnions Unions em C/ C++em C/ C++ I
CC C++C++
Uso explícitoexplícito da palavra-chave unionunion para a declaração/ definição da união
Uso desnecessáriodesnecessário da palavra-chave unionunion após a declaração/ definição do tipo
28{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Exemplo 09 Exemplo 09
unionunion JUNCAO JUNCAO{{ intint a, b, c; a, b, c; floatfloat d, e, f; d, e, f; doubledouble g, h, i; g, h, i;}};;
unionunion JUNCAO v1; // Declaracao da estrutura em C JUNCAO v1; // Declaracao da estrutura em CJUNCAO v2; // Declaracao da estrutura em C++JUNCAO v2; // Declaracao da estrutura em C++
v1.b = 5; // Uso da variavel como intv1.b = 5; // Uso da variavel como intv2.d = 5.13; // Uso da variavel como floatv2.d = 5.13; // Uso da variavel como floatv1.h = 7.256; // Uso da variavel como doublev1.h = 7.256; // Uso da variavel como double
Unions Unions em C/ C++em C/ C++ IIUnions Unions em C/ C++em C/ C++ II
29{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Enums Enums em C/ C++em C/ C++ IEnums Enums em C/ C++em C/ C++ I
CC C++C++
Uso explícitoexplícito da palavra-chave enumenum para a declaração da união
Uso apenasapenas da etiqueta (tag) da enumeração
30{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
DSC/CCT/UFCG
DSC/CCT/UFCG
Exemplo 10 Exemplo 10
enumenum Dias // Declaracao do tipo enum Dias Dias // Declaracao do tipo enum Dias{{ Sabado, // Sabado = 0 (por definicao)Sabado, // Sabado = 0 (por definicao) Domingo = 0, // Domingo = 0 (por atribuicao do usuario)Domingo = 0, // Domingo = 0 (por atribuicao do usuario) Segunda, // Segunda = 1Segunda, // Segunda = 1 Terca, // Terca = 2Terca, // Terca = 2 Quarta, // Quarta = 3Quarta, // Quarta = 3 Quinta, // Quinta = 4Quinta, // Quinta = 4 Sexta // Sexta = 5Sexta // Sexta = 5}} Hoje; // Criacao da variavel Hoje do tipo Dias Hoje; // Criacao da variavel Hoje do tipo Dias
intint Sexta; // Definicao incorreta (redefinicao de Sexta) Sexta; // Definicao incorreta (redefinicao de Sexta)
enumenum Dias Ontem; // Correta em C e C++ Dias Ontem; // Correta em C e C++Dias Amanha; // Correta apenas em C++Dias Amanha; // Correta apenas em C++
Ontem = Quinta;Ontem = Quinta;
intint d = Quinta; // Correta (atribuicao de 2 a d) d = Quinta; // Correta (atribuicao de 2 a d)Ontem = 0; // Incorreta (sem conversao de tipo)Ontem = 0; // Incorreta (sem conversao de tipo)Ontem = (Dias)0; // Correta, mas com resultados indefinidosOntem = (Dias)0; // Correta, mas com resultados indefinidos
Enums Enums em C/ C++em C/ C++ IIEnums Enums em C/ C++em C/ C++ II
DSC/CCT/UFCGDSC/CCT/UFCG
{jose
ana,
ran
gel}@
dsc.
ufcg
.edu
.br
[email protected], [email protected]
[email protected], [email protected]
José Eustáquio Rangel de Queiroz
José Eustáquio Rangel de Queiroz
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
UNIVERSIDADE FEDERAL DE CAMPINA GRANDECENTRO DE CIÊNCIAS E TECNOLOGIACENTRO DE CIÊNCIAS E TECNOLOGIA