C语言加上输入语句问题请教!

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:45:47
#include <stdio.h>

void main()
{
long a = 0x12345678,b,c,d,e;

b= a << 24 ;
c= a >> 24 ;

d= a << 8 ;
d= d & 0x00ff0000;

e= a >> 8 ;
e= e & 0x0000ff00;

a= b + c + d + e;

printf("a= %0#x\n",a);
}

我想把这个程序开始定义a时的赋值去掉,改为用scanf语句手动输入a的赋值
但是我改成:
#include <stdio.h>

void main()
{
long a,b,c,d,e;
scanf("%#x",a);

b= a << 24 ;
c= a >> 24 ;

d= a << 8 ;
d= d & 0x00ff0000;

e= a >> 8 ;
e= e & 0x0000ff00;

a= b + c + d + e;

printf("a= %0#x\n",a);
}

程序输出结果为a = 0xcccccbcc ?为什么?是哪出问题了?
刚接触C语言不太懂...
我输入的是 0x12345678 要得到的结果是0x78563412

额..麻烦就此程序具体分析... !!谢谢...

应该是scanf("%x",&a);吧

额...这个...有什么问题?一个16进制数,不是你需要的?

scanf("%x",a); 这样吧?加#做什么?数字前面有0x,系统能自动识别16进制数的吧

#include <stdio.h>

void main()
{
long a,b,c,d,e;
scanf("%#x",a); //错了 应改为:scanf("%0x",&a);
b= a << 24 ;
c= a >> 24 ;
d= a << 8 ;
d= d & 0x00ff0000;
e= a >> 8 ;
e= e & 0x0000ff00;

a= b + c + d + e;

printf("a= %0#x\n",a); //错了
}
正确的:
#include <stdio.h>
void main()
{
long a,b,c,d,e;
scanf("%0x",&a);
b= a << 24 ;
c= a >> 24 ;
d= a << 8 ;
d= d & 0x00ff0000;

e= a >> 8 ;
e= e & 0x0000ff00;

a= b + c + d + e;

printf("a= %0x\n",a);
}

楼上的都错了
比如说
main()
{
int value = 255;
printf("%d\t%#o