Ir ao conteúdo
  • Cadastre-se

Chr15

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por Chr15

  1. Boa noite,@Lucca Rodrigues🙋‍♂️
    Primeiramente muito obrigado pela resposta. 🤝

     

    8 horas atrás, Lucca Rodrigues disse:

    Isso faz com que caracteres de espaço em branco sejam lidos e ignorados, é uma boa prática se a ideia é evitar com que o usuário tecle Enter logo de cara (caso não haja interesse em ler esses caracteres).

     

    No vídeo que vi, não foi dito o motivo, só que funcionava quando fosse colocado esse espaço...

     

    8 horas atrás, Lucca Rodrigues disse:

    Qual tecla é pressionada ao finalizar a leitura? Enter!

    Essa tecla interessa na leitura de um inteiro? de um ponto flutuante? A resposta é não, mas veja, vai interessar na leitura de um caractere.

    \n é um caractere de espaço em branco, e você pode ignorá-lo colocando um espaço como primeiro caractere na string de formato na scanf():

    Assim como fez sem saber o motivo, mas agora você sabe 🙂

     

    Mas agora eu sei o porquê e vários outros saberão também quando encontrarem esse tópico quando surgir alguma dúvida relacionada. Obrigado!

     

    8 horas atrás, Lucca Rodrigues disse:

    Sugiro esquecer bool em C, vai alocar 8 bits em vez de 1 como deveria (true ou false), acaba falhando no próprio conceito da variável. Pode usar um inteiro no lugar.

     

    Aqui não é stackoverflow... Duplicado ou não, se for uma questão válida, você será respondido 😄

     

    E sim, eu fui informado que bool em C é quase inútil, mas começando agora preciso testar e saber os reais motivos para tal.
    Acabo de descobrir!

    Obrigado mais uma vez pela disposição, @Lucca Rodrigues!


    ------------------------------------------------------------------------------------------------

    Boa noite,@mauro_b!

     

    1 hora atrás, mauro_b disse:

    #2

    O especificador na função Insinua que o parâmetro tem um decimal inteiro (ou seja, tipo int (32 bits (4 bytes))), entretanto sabemos ser falso, pois um tipo _Bool (ou bool — sendo seu apelido) tem 1 byte tal qual o tipo char.

     

    Então, pergunta-se... a scanf grava em cima de quem, já que bool tem 1 byte, mas 'scanf' precisa de 4 bytes?

    — DA 'Caractere' e DA 'Decimal' e com isso altera suas estruturas e seus valores.

     

    [🙂] — espero que ajude! 

     

    Antes de mais nada: obrigado pelos esclarecimentos! Confesso que fiquei 2 minutos refletindo o que você tinha dito mas agora entendo o que significa (ou pelo menos acho que entendo).

    Se eu declaro que o scanf precisa de um inteiro ("%d" e peço desculpas se eu te corrigir errado mas creio que o mesmo tem 2 bytes) e bool tem somente 1 byte, ele sobrescreve a variável char para que se torne inteiro (2 bytes) e isso altera a característica da variável, tornando o printf nulo pois não condiz com seus parâmetros.

     

    É isso, não? Por favor, me corrija se eu estiver errado.

     

    Detalhe: a variável float agora funciona normalmente, só precisei removê-las do printf em que perguntava quais seriam os novos valores das variáveis. Antes mesmo de remover a bool.

     

     

     

    Te agradeço grandemente pela disposição em repassar os conhecimentos adquiridos com tanta paciência e boa vontade! 👏

    Um ótimo início de semana para vocês! 😁

    Aguardo mais informações.

    Chris

    • Curtir 2
  2. Bom dia, @De Los Santos!

     

        printf("\nQual o novo valor para Inteiro? ", Inteiro);
        printf("\nQual o novo valor para Decimal? ", Decimal);
        printf("\nQual o novo valor para Caractere? ", Caractere);
        printf("\nQual o novo valor para Booleano? ", Booleano);


    Obrigado pelo feedback. Corrigi o detalhe das variáveis no printf citado. Realmente não fazia sentido, erro de iniciante.
     

        scanf(" %c", &Caractere);

     

    Quanto a esse scanf, em um momento anterior tive um problema ao tentar obter o input para essa função funcionar, o código não funcionava, saltando para a linha seguinte sem perguntar qual o novo valor para essa variável.

    Vi num vídeo que o scanf em variáveis char precisavam deste espaço antes do %c para funcionar, senão ela é ignorada. Coloquei e funcionou por alguns testes. Mas após inserir o Booleano no código tive esse problema que não consegui resolver ainda...

     

    Aguardo novas orientações,

     

    Chris

    • Curtir 2
  3. Bom dia, Clube! 🙋‍♂️ Tudo bem com vocês? 😁

    Já começo pedindo desculpas caso meu tópico esteja duplicado ou por faltar algum detalhe inicialmente... Sou novo nesse mundo e tô aqui pra aprender.

     

    Utilizando o gancho da aprendizagem, agradeceria grandemente se alguém pudesse me responder esses problemas que esbarrei no primeiro dia de codificação C :

     

    1. O retorno da função printf da variável float nomeada Decimal tem o valor menor do que o definido manualmente pelo scanf;
    2. O retorno da função printf da variável char nomeada Caractere após o scanf neste código fica vazio por algum motivo.

     

    Aqui o código:

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    //Incluindo bibliotecas pre-definidas
    
    void main(){
        int Inteiro;
        float Decimal;
        char Caractere;
        bool Booleano;
    //Definindo variáveis e seus tipos
    
        Inteiro = 4;
        Decimal = 1.5;
        Caractere = 'C';
        Booleano = false;
    //Definindo valores das variáveis
    
        printf("\nO valor da variavel Inteiro atualmente = %d!", Inteiro);
        printf("\nQual o novo valor para Inteiro? ", Inteiro);
    //Imprimindo na tela
        scanf("%d", &Inteiro);
    //Pedindo usuário para inserir novo valor
    
        printf("\nO valor da variavel Decimal atualmente = %f!", Decimal);
        printf("\nQual o novo valor para Decimal? ", Decimal);
    //Imprimindo na tela
        scanf("%f", &Decimal);
    //Pedindo usuário para inserir novo valor
    
        printf("\nO valor da variavel Caractere atualmente = %c!", Caractere);
        printf("\nQual o novo valor para Caractere? ", Caractere);
    //Imprimindo na tela
        scanf(" %c", &Caractere);
    //Pedindo usuário para inserir novo valor
    
        printf("\nO valor da variavel Booleano atualmente = %d!", Booleano);
        printf("\nQual o novo valor para Booleano? ", Booleano);
    //Imprimindo na tela
        scanf("%d", &Booleano);
    //Pedindo usuário para inserir novo valor
    
        printf("\nO novo valor de A = %d", Inteiro);
        printf("\nO novo valor de B = %f", Decimal);
        printf("\nO novo valor de C = %c", Caractere);
        printf("\nO novo valor de D = %d\n\n", Booleano);
    //Imprimindo valores após a modificação
    
        system("pause");
    //Pausando após execução
        }

     

    Sei que é um código simples e a ideia é essa mesmo! Comecei literalmente ontem e estou testando os tipos de variáveis.
    Só que aí encontrei esses detalhes que não consegui encontrar a falha...

    Aguardo respostas e sou grato antecipadamente pelo tempo e disposição de vocês.

     

    Abraços,

    Chris

    erro 1.png

    • Amei 1

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!