printf

printf是格式化输出,速度往往比cout要快,当然printf的格式更为严格一些,在利用printf输出变量时需要指明输出控制符,而不同的输出控制符对应着不同的输出格式,也仅仅是输出格式,内存中存储的数值是固定不变的。

更容易理解的讲:不同格式化输出控制符对应的是一个存储单元不同的展现形式,该单元的存储值是不变的。

	int i = 10;
	printf("i(%%d) = %d\n", i);
	printf("i(%%p) = %p\n", i);
	printf("i(%%x) = %x\n", i);
	int *pi = &i;
	printf("pi(%%d) = %d\n", pi);
	printf("pi(%%p) = %p\n", pi);
	printf("pi(%%x) = %x\n", pi);
	printf("&i(%%d) = %d\n", &i);
	printf("&i(%%p) = %p\n", &i);
	printf("&i(%%x) = %x\n", &i);

就像%d往往用来输出int类型变量一样,%p往往用来输出指针类型变量。

换言之,输出整型数据用%d,是因为该内存单元所存放的数值是整型;输出指针类型数据用%p,是因为该内存单元所存放的数值是地址型;

注意用词:地址型而非指针型,指针型数据可以理解为地址型数据,而地址型数据并非都是指针型数据,例如 &i,这其实是一个运算式,&是单目运算符,返回变量i的地址,此时要想输出&i,也是用到&p。

通过看测试的三组样例,应该能够深刻的体会到,不同的输出控制符,只是将数据以不同的形式展现出来而已,%d是十进制,%p与%x均为十六进制,进制转换一下,会发现其数值是不变的。

关于%p和%x的区别

%p用来输出地址;%x用来输出一个数值,而这个数值是以十六进制表示。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

6eanut

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值