C中的%d,%o,%f,%e,%x的区别

C中的格式字符有d,o,x,u,c,s,f,e,g等,以前有看到其中某些能够大写(待肯定)。 
如:web

%d整型输出,%ld长整型输出,函数

%o以八进制数形式输出整数,spa

%x以十六进制数形式输出整数,指针

%u以十进制数输出unsigned型数据(无符号数)。orm

%c用来输出一个字符,字符串

%s用来输出一个字符串,it

%f用来输出实数,以小数形式输出,io

%e以指数形式输出实数,编译

%g根据大小自动选f格式或e格式,且不输出无心义的变量

 

c语言中以16进制输出时%0x和%x有什么区别?


标准C语言库函数fprintf/printf格式字符串的转换说明形式是这样的:

%[标志][最小输出宽度][.精度][长度修正符]类型
方括号括起来为option项目。

当[标志]是0或多个标志字符,能够是任意顺序,经常使用有如下几个:
 -   左对齐,缺省是右对齐。
 + 带符号的值前面老是有个符号,也就是正数前面有+号,负数前面有-号。
 0  输出值的宽度小于最小宽度的话,用0填充,缺省是用空格填充。

0也是是一个标志字符,意思就是用0填充
 


特殊状况:C语言%p的含义:

格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎全部实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p通常以十六进制整数方式输出指针的值,附加前缀0x。
示例:
int i = 1;
printf("%p",&i);
至关于
int i = 1;
printf("0x%x",&i);
对于32位的指针,输出通常会是相似0xf0001234之类的结果。
%p存在的理由除了附加前缀输出的便利性之外,如LS所说,指针的大小是不肯定的,由实现决定。根据地址空间的大小,通常有16位、32位、64位的指针。尽管目前32位平台上的指针通常全是32位的,但旧的一些平台上可能有多种长度的指针(例如非标准的near、far、huge修饰的pointer)混用,没法用%x、%lx、%hx、%llx(对应int、long、short、long long)中的任意一种保证能输出全部类型的指针。

 

 

scanf(控制字符,地址列表) ;


格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,能够是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);

注意控制字符之间的格开字符,通常数据之间的分隔为:空格,tab,和回车;如获取的为字符时,空格和tab都可当为字符给自动录入。

相关文章
相关标签/搜索