c-接受用户输入的位运算符


#include<stdio.h>
int main()
{
unsigned char a,b;

printf("Enter first number : ");
scanf("%d",&a);
printf("Enter 2nd number : ");
scanf("%d",&b);
printf("a&b = %dn", a&b);
printf("a|b = %dn", a|b); 
printf("a^b = %dn", a^b);

printf("~a = %dn",a = ~a);
printf("b<<1 = %dn", b<<1); 
printf("b>>1 = %dn", b>>1); 
return 0;
}

我正在接受用户的输入,但我得到了错误的输出,我如何修改i***

error


scanf的这些调用

scanf("%d",&a);

scanf("%d",&b);

使用不正确的格式规范。

变量ab被声明为具有类型unsigned char

unsigned char a,b;

如果你想在这些变量中输入整数,你需要写

scanf("%hhu",&a);

scanf("%hhu",&b);

所以你的程序看起来像

#include <stdio.h>
int main( void )
{
unsigned char a, b;
printf( "Enter first number : " );
scanf( "%hhu", &a );
printf( "Enter 2nd number : " );
scanf( "%hhu", &b );
printf( "a&b = %dn", a & b );
printf( "a|b = %dn", a | b );
printf( "a^b = %dn", a ^ b );
printf( "~a = %dn", a = ~a );
printf( "b<<1 = %dn", b << 1 );
printf( "b>>1 = %dn", b >> 1 );
}

程序输出可能看起来像

Enter first number : 10
Enter 2nd number : 15
a&b = 10
a|b = 15
a^b = 5
~a = 245
b<<1 = 30
b>>1 = 7

相关内容

最新更新