当前位置: 代码迷 >> C语言 >> 请帮我试一下这个printf问题
  详细解决方案

请帮我试一下这个printf问题

热度:338   发布时间:2008-06-20 15:14:12.0
请帮我试一下这个printf问题
请帮我试一下这个printf问题,我那结果好象不对

unsigned char a;
unsigned int b;
unsigned long c;
a=16;
b=4096;
c=268435456;
printf ("a= %u \n",a);
printf ("b= %u \n",b);
printf ("c= %u \n",c);

[[it] 本帖最后由 woojinabc 于 2008-6-20 15:18 编辑 [/it]]
搜索更多相关的解决方案: printf  

----------------解决方案--------------------------------------------------------
呀,没错啊!
他输入了什么?你在什么地方编译的?
b= %d 这里为什么用空格啊!
----------------解决方案--------------------------------------------------------
好像%u是指int,如果是short就用%hu,如果是long就用%lu。
至于char嘛……麻烦类型转换一下嘛……(int)a
----------------解决方案--------------------------------------------------------
b= %d 这里为什么用空格啊!

这个跟空格不空格没关系的
----------------解决方案--------------------------------------------------------
输出的类型要和定义的一致啊,像3#说的~~
----------------解决方案--------------------------------------------------------
我试了,结果也不对,请帮我试一下,在TC,VC下结果对不对

unsigned char a;
unsigned int b;
unsigned long c;
a=16;
b=4096;
c=268435456;
printf ("a= %u \n",int(a));
printf ("b= %hu \n",b);
printf ("c= %lu \n",c);
----------------解决方案--------------------------------------------------------
%u指的是int型,输出结果:a=16,b=4096,c=?。a,b输出结果没有疑问吧,c=2的28次幂,即1后28个0,int型位数没超过28位,输出为0;超过28位,输出原值。
----------------解决方案--------------------------------------------------------
最后一个%u改为%ld,这样就对了。
----------------解决方案--------------------------------------------------------
  相关解决方案