c语言16进制输出 我想知道从哪里看出来第八行输出的是有符号的,十进制数 那么没有符号的十进制数又该怎么表示

C语言,如何输出有符号的八、十六进制数?_百度知道
C语言,如何输出有符号的八、十六进制数?
#include &stdio.h&int main(){
int a =10;
printf(&%d,%x,%o&,a,a,a,);//第一个是十进制,第二个是十六进制,第三个是八进制} 如果有不明白加我百度HI
其他类似问题
为您推荐:
34;;printf(&%(空格)o#%(空格)x&,&#39printf(&%o#%x&quot,-6);a');a&#39,'
十六进制数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言格式输出函数printf()详解
4.1.1printf函数(格式输出函数) printf函数称为格式输出函数,其关键字最末一个字母f即为格式(format)之意。其功能是按用户指定的格式,把指定的数据显示到显
4.1.1printf函数(格式输出函数)
printf函数称为格式输出函数,其关键字最末一个字母f即为&格式&(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。
printf函数调用的一般形式
printf函数是一个标准库函数,它的函数原型在头文件&stdio.h&中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为:
&&& printf(&格式控制字符串&,输出表列)
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
&%d&表示按十进制整型输出;
&%ld&表示按十进制长整型输出;
&%c&表示按字符型输出等。
非格式字符串在输出时原样照印,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。
& int a=88,b=89;
& printf(&%d %d\n&,a,b);
& printf(&%d,%d\n&,a,b);
& printf(&%c,%c\n&,a,b);
& printf(&a=%d,b=%d&,a,b);
本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号,因此输出
的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。
格式字符串
在Turbo C中格式字符串的一般形式为:&[标志][输出最小宽度][.精度][长度]类型。其中方括号[]中的项为可选项。
各项的意义介绍如下:
类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
意&&&&&&&&&&& 义
以十进制形式输出带符号整数(正数不输出符号)
以八进制形式输出无符号整数(不输出前缀0)
以十六进制形式输出无符号整数(不输出前缀Ox)
以十进制形式输出无符号整数
以小数形式输出单、双精度实数
以指数形式输出单、双精度实数
以%f或%e中较短的输出宽度输出单、双精度实数
输出单个字符
输出字符串
标志:标志字符为-、+、#、空格四种,其意义下表所示:
意&&&&&&&& 义
结果左对齐,右边填空格
输出符号(正号或负号)
输出值为正时冠以空格,为负时冠以负号
对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点
输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
精度:精度格式符以&.&开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
& int a=15;
& float b=123.1234567;
& double c=4567;
& char d='p';
& printf(&a=%d,%5d,%o,%x\n&,a,a,a,a);
& printf(&b=%f,%lf,%5.4lf,%e\n&,b,b,b,b);
& printf(&c=%lf,%f,%8.4lf\n&,c,c,c);
& printf(&d=%c,%8c\n&,d,d);
&&& 本例第七行中以四种格式输出整型变量a的值,其中&%5d &要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中&%f&和&%lf &格式的输出相同,说明&l&符对&f&类型无影响。&%5.4lf&指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,&%8.4lf &由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中&%8c &指定输出宽度为8故在输出字符p之前补加7个空格。
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请看下面两个例子:
& int i=8;
& printf(&%d\n%d\n%d\n%d\n%d\n%d\n&,++i,--i,i++,i--,-i++,-i--);
& int i=8;
& printf(&%d\n&,++i);
& printf(&%d\n&,--i);
& printf(&%d\n&,i++);
& printf(&%d\n&,i--);
printf(&%d\n&,-i++);
& printf(&%d\n&,-i--);
这两个程序的区别是用一个printf语句和多个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行的。在第一例中,先对最后一项&-i--&求值,结果为-8,然后i自减1后为7。 再对&-i++&项求值得-7,然后i自增1后为8。再对&i--&项求值得8,然后i再自减1后为7。再求&i++&项得7,然后i再自增1后为8。 再求&--i&项,i先自减1后输出,输出值为7。 最后才求输出表列中的第一项&++i&,此时i自增1后输出8。
但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。
下一篇:C语言格式输入函数scanf()详解
上一篇:C语言字符数据的输入输出
四、顺序程序设计
关于我们帮助文件网站合作网站事务
关于“C语言中文网”
如何加入我们
文章评论注意事项
怎样让我的QQ群也出现在这里
C语言中文网 @2010 |
程序支持:陕西成人高考
| Themes by 莫之烟
| Shell编程
| 陕西专升本
| 备案号:陕ICP备号
搜索相关文章:
(责任编辑:admin)
------分隔线----------------------------
WIN7视频教程 Win 7的UI及操行性都比XP好很多,与Vista相比,所消耗的资源也较少,系...
Excel VBA基础教程 Excel VBA 教程是把 VB 编程应用在 Excel 平台的一套实用教程, Ex...
VB教程003 主窗口的组成(2)...
女生最爱!索尼TX3笔记本性感上市,,女生最爱!索尼TX3笔记本性感上市,,女生最爱!索尼...
NEC S3000这款集苹果优点于一身的日系本机上市之后一直受到许多MM们的关注,因为它类...
第一课 Windows编程和面向对象技术
  1.1 Windows发展历史
  1.2 Windows操作...C语言unsigned无符号类型可否以八进制、十六进制形式输出?
[问题点数:40分,结帖人xinjian1001]
C语言unsigned无符号类型可否以八进制、十六进制形式输出?
[问题点数:40分,结帖人xinjian1001]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。c语言的一个题。 第八题_百度知道
c语言的一个题。 第八题
/zhidao/wh%3D450%2C600/sign=d7d907be0fedc7e37b1a/38dbb6fda6dd912bd4.hiphotos://c.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.baidu.jpg" esrc="<img class="ikqb_img" src="http,即为-2的补码%d为原样输出即为-2;%o以8进制的形式输出,将11 11 从右开始往左每四位组成一个十六进制的数即fffffffe;%x以十六进制的形式输出; &nbsp,位数大于三位时原样输出.com/zhidao/pic/item/738bfcfa;&nbsp.jpg" />过程.我这int占4个字节即32位.加1;%-3d当当要输出的数位数不足三位时右边补空格;这是211 11
&nbsp, 即将-2的补码看作无符号的数以十六进制的形式输出;&/zhidao/wh%3D600%2C800/sign=9f91b4dab51bbe064af68c/738bfcfa<a href="http,-2占两位所以左边补一个空格;&nbsp,负数的补码为其原码(-2的原码即为2)取反加1
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
采纳率100%
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言中 %u是什么意思啊 看别人说是无符号十进制输出 但我的程序好像不是 程序在补充那里再打_百度知道
c语言中 %u是什么意思啊 看别人说是无符号十进制输出 但我的程序好像不是 程序在补充那里再打
printf(&unsigned int ui= a程序void main(){int a= -10,ui);;ui= %u &#92;}
输出的ui应该是10 但为什么输出是的;n&quot
提问者采纳
-10强制转换成无符号就是
这个知识点可以给我讲解一下吗
怎样转的?
负值最高位有个符号位,转成无符号时就变成很大的值
提问者评价
其他类似问题
为您推荐:
c语言的相关知识
其他2条回答
u是无符号的a是有符号的。有符号的转化为无符号的。这里牵涉到二进制在计算机内部的表示问题,并不是直接去掉前面的-号那么简单
%u不是取绝对值。计算机中的数值是以二进制补码存储的,对于-10,如果把它的补码按无符号数解析进行输出,也就是最高位不是作为符号位,结果就是你输出的那个数值。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言16进制输出 的文章

 

随机推荐