gcc Scanf重置常量变量

c8ib6hqw  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(567)

我在C语言中使用了位运算符,我有这样一段代码:

#include <stdio.h>
#include <stdlib.h>
#include "binario.h"

int main() {
    const unsigned char idade = 28;
    unsigned char temp1 = 0, temp2 = 0;
    
    printf("Trabalhando bit a bit\n");
    printf("---------------------\n\n");
    
    printf("Aqui farei alguns testes usando operadores bit a bit.\n");
    printf("Estarei usando minha idade como referencia.\n");
    printf("Em decimal: %u\n", idade);
    printf("Em binario: ");
    transformaBinario(idade);
    printf("\nEm caractere: %c\n\n", idade);
    
    printf("Agora, usarei o operador bit a bit \"~\" com a minha idade.\n");
    temp1 = ~idade;
    printf("Em decimal: %u\n", temp1);
    printf("Em binario: ");
    transformaBinario(temp1);
    printf("\nEm caractere: %c\n\n", temp1);
    
    printf("Agora, usarei o operador bit a bit \"&\" com um valor inserido.\n");
    printf("Digite um numero entre 0 e 255: ");

    scanf("%u", &temp2);
    /*FACING PROBLEMS IN THIS SCANF ABOVE!*/

    printf("O valor digitado corresponde, em decimal, a: %u\n", temp2);
    printf("O valor digitado corresponde, em caractere, a: %c\n", temp2);
    printf("O valor %u em binario, corresponde a: ", temp2);
    transformaBinario(temp2);
    printf("\nO valor %u em binario, corresponde a: ", idade);
    transformaBinario(idade);
}

binario.h是一个库,它只是做了一些十进制到二进制的转换。这里的问题是,在scanf之前,我的常量“idade”的值是28。在那之后,它只是被重置为0。我对temp2变量没有任何问题...只是我的常量被擦除为0。你能帮帮我吗?

bz4sfanl

bz4sfanl1#

对于无符号字符,您需要使用%c,而不是%u

相关问题