指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。
printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。
示例:
int
i
=
1
printf("%p",&i)
相当于
int
i
=
1
printf("0x%x",&i)
对于32位的指针,输出一般会是类似0xf0001234之类的结果。
%e存在的理由除了附加前缀输出的便利性以外,指针的大小是不确定的,由实现决定。
根据地址空间的大小,一般有16位、32位、64位的指针。
尽管目前32位平台上的指针一般全是32位的,但旧的一些平台上可能有多种长度的指针(例如非标准的near、far、huge修饰的pointer)混用,无法用%x、%lx、%hx、%llx(对应int、long、short、long
long)中的任意一种保证能输出所有类型的指针。
其余由“%”和格式字符组成的意义是:
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
E表示用科学技术法,做为一个字符串或者是定义的宏。当变量E==0时候,此时把E当作表达式来看,表达式E的值为假,形如if(E)这样的语句不被执行。
当E是0的时候,表达式E的值是假,表达式!E的值是真,此时表达式E==0的值也是真;
当E不是0的时候,表达式E的值是真,表达式!E的值是假,此时表达式E==0的值也是假。
c语言中的E的使用示例:
#include"math.h"
voidmain()
{
doublee;
unsignedintn=65535;//用65535表示数学意义上的‘无穷大’
e=1+1.0/n;//注意一定写1.0
e=pow(e,n);//pow(doublex,doublen)表示求X的N次方
printf("%f",e);
}
%e是按指数的形式输出,比如 4.22e5
e表示10的N次方,5.2 长度为5,小数点精确度为2,这个本身和%e没有关系,C语言的输出就是标准就这样。
详细点的说明就是 %m.ne 指定输出的数值共占m位,其中有n位小数。若数值长度小于m,则左端补空格。若数值长度大于m,则按实际数值输出,小数位保留n位。
这是ptintf()的格式。
其他格式输出符如下图:
扩展资料:printf函数用法:
F|N|h|l
表示指针是否是远指针或整数是否是长整数
F 远指针,N 近指针,h 短整数(short int),l 长整数(long int) (此处如果与d搭配为%lld则为long long int(C99),与f搭配为%llf则为long double(C99))
[Argument]
包含需要输出的数据,可以是常量(字符常量、数字常量、字符串常量),变量,以及运算式。此处的数据应当与前面的format中的格式控制符一一对应(如果不对应会产生错误)。