Controle variável para C Programming
Na programação C, você pode mexer com a variável no seu código, alterando-o em outro tipo, dando-lhe um novo nome completamente, ou lançar um feitiço sobre a variável para atender às suas necessidades, sem fins lucrativos ou não.
Typecasting em descrença
Quando é uma variável flutuante não uma bóia? Quando é estereotipado em um int, é claro. Este truque é possível em C usando a typecast. Por exemplo:
(Int)dívida
Na linha anterior, a variável flutuador dívida é estereotipado como um valor int. O int entre parênteses direciona o compilador para tratar o valor de dívida como um número inteiro.
Por que alguém iria querer fazer isso?
Porque às vezes uma função requer um tipo variável específica e que tipo não está disponível. Ao invés de converter e manipular vários tipos de variáveis em um programa, você pode simplesmente estereotipado uma variável para o tipo que você deseja. Não é um truque comum, mas é muitas vezes necessário, como mostra a isso não está certo.
ISSO NÃO ESTÁ CERTO
#include int main () {int a, b-float c-printf ( "Digite o primeiro valor:") -scanf ( "% d", a) -printf ( "Input o segundo valor:") -scanf ( " % d ", b) -C = a / b-printf ("% d /% d =% .2f n ", a, b, c) -Retornar (0) -}
Exercício 1: Digite o código fonte a partir Isso não está certo em seu editor. Construir e executar.
Aqui está um exemplo de execução com a entrada em negrito:
Introduza o primeiro valor: 3Introduza o segundo valor: 23/2 = 1,00
Obviamente, é errado que 3 # 247- 2, de alguma forma trabalhar fora para 1,50. Se o computador diz que é 1,00, o computador deve estar correto.
Ou talvez o computador é apenas confuso porque na linha 12 do código-fonte, dois valores int são divididos, eo resultado é atribuído a uma bóia. Isso não funciona muito bem, no entanto, porque dividir um número inteiro por um número inteiro em C resulta em um inteiro como o resultado.
O valor 1 é o valor inteiro mais próximo de 1,50. Assim, mesmo que o computador estiver errado, ele está fazendo exatamente o que foi dito para fazer.
Exercício 2: Modificar seu código-fonte, mudando Linha 12 para ler
c = (float) a / (float) b-
Salvar a alteração. Criar e executar usando os mesmos valores apenas como mostrado. Aqui está o novo output:
Introduza o primeiro valor: 3Input o segundo valor: 23/2 = 1,50
Melhor. Isso é porque você estereotipado variáveis uma e b na equação, permitindo temporariamente o compilador para tratá-los como números de ponto flutuante. Portanto, o resultado é o que deveria ser.
Como criar coisas novas com typedef
Você pode entrar em um monte de problemas com a palavra-chave typedef. Ele pode lançar palavras e operadores C normal de seus eus consistentes em todos os tipos de travessuras.
Os perigos da typedef
#include typedef int fedido-fedido main () {a = 2-printf fedido ( "Todo mundo sabe que") -printf ( "% d +% d =% d n", a, a, a + a) -Retornar (0) -}
Em Os perigos da typedef, a instrução typedef na linha 3 define a palavra fedido de ser a mesma que a palavra-chave int. Em qualquer lugar você pode usar int no código, você pode usar a palavra fedido em vez disso, como mostrado nas linhas 5 e 7.
Exercício 3: Use o código-fonte dos perigos do typedef para criar um novo programa, o que demonstra que um tipo variável fedido é o mesmo que um int. Construir e executar.
Concedido, o exemplo em Os Perigos de typedef é bastante parva nenhuma programador sério iria criar um programa real assim. Onde typedef é usado na maioria das vezes é na definição de estruturas. A declaração typedef ajuda a reduzir o chunkiness dessa atividade.
Criando uma estrutura da maneira tradicional mostra como nested operação estrutura funciona, dado um conhecimento das estruturas:
Criação de uma estrutura da maneira tradicional
id struct {char primeira [20] -char última [20] -} - data struct {int mês ano-int dia-int -} - struct humana {struct aniversário ID nome data-estrutura -} -
utilização typedef para definir uma estrutura mostra como as declarações ocorrer se você fosse typedef as estruturas:
USANDO typedef Para definir uma estrutura
typedef struct {char id primeira [20] -char última [20] -} personal-typedef data struct {int mês-int dia-int ano-} humana {aniversário pessoal name-calendário -} calendário-estrutura -
Nesta listagem, o ID de estrutura é typedef para o nome pessoal. Isso não é uma variável nome- é um typedef. É o mesmo que dizer, # 147 Todas as referências a ID de struct são agora o mesmo que o nome pessoal # 148.;
Da mesma forma, a data estrutura é typedef ao calendário. Finalmente, na declaração da estrutura humana, os nomes typedef são usados em vez das definições de estruturas mais complexas.
A estrutura aninhada
#include #include int main () {data struct {int mês ano-int dia-int -} - {char nome humana struct [45] -struct aniversário data -} - struct humana presidente strcpy (president.name, "George Washington ") - president.birthday.month = 2-president.birthday.day = 22-president.birthday.year = 1732-printf ("% s nasceu em %d/%d/%dn",president.name,president.birthday.month,president.birthday.day,president.birthday.year)-return(0)-}
exercício 4: Substitua o nome membro na estrutura humana em uma estrutura aninhada com uma estrutura aninhada. Nome que id estrutura e tê-lo contém dois membros, matrizes de caracteres, primeiro e último, para o armazenamento de nomes e sobrenomes de um indivíduo.
Se você fizer tudo corretamente, a referência ao nome do presidente será as variáveis president.name.first e president.name.last. Certifique-se de atribuir valores a essas variáveis em seu código e exibir os resultados.
exercício 5: Modificar o código fonte do projeto criado no Exercício 4 para usar typedef, como mostrado na Usando typedef para definir uma estrutura. Construir e executar.
Pode-se argumentar que o uso de typedef não tornar o seu código mais claro do que se tivesse simplesmente usado bons nomes de variáveis e um texto bem formatado. Por exemplo, você não pode usar typedef simplesmente porque você não quer ter que lembrar o que você definiu. Mas você vai encontrar outro código que usa typedef. Não deixe que ele te assustar.
A verdadeira vantagem de usar typedef com uma estrutura é, possivelmente, que ele evita que você digitar a palavra struct muitas vezes.