我在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。你能帮帮我吗?
1条答案
按热度按时间bz4sfanl1#
对于无符号字符,您需要使用
%c
,而不是%u
。