指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。
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);
}