printf()输出八进制整数时,用%o代替%d,输出十六进制时,用%x。
%#o、%#x和%#X分别生成0、0x、0X前缀。
1 #include <stdio.h> 2 int main(void) 3 { 4 int x = 100; 5 printf("dec = %d; octal = %o; hex = %x;\n", x, x, x); 6 printf("dec = %#d; octal = %#o; hex = %#x;\n", x, x, x); 7 return 0;8 }
输出:
dec=100;octal=144;hex=64;
dec=100;octal=0144;hex=0x64;
为什么说long和short类型“可能”占用比int类型更多或者更少的存储空间呢?因为C仅保证short类型不会比int类型长,并且long类型不会比int类型短。这样做是为了适应不同的机器。
当使用int类型不能表示一个数而使用long类型可以做到时,使用long类型。但是,在long类型大于int类型的系统中,使用long类型会减慢计算,所以没有必要时不要使用long类型。如果是在long类型等于int类型的系统中编写代码,当确实需要32位整数时,应使用long类型(而不是int类型),以便使程序被移植到16位机器上后仍然可以正常工作。
要打印unsigned int数字,可以使用%u符号。打印long数值,可以使用%ld格式说明符。如果系统中int和long类型具有同样的长度,使用%d就可以打印long数值,但是这会给程序移植到其他系统(这两种数据类型的长度不一样的系统)带来麻烦,所以建议使用%ld打印long数值。在x和o符号前也可以使用l前缀,因此%lx表示以十六进制格式打印长整数,%lo表示以八进制格式打印长整数。请注意,尽管在C中常量后缀可以使用大写和小写,但格式说明符只能使用小写字母。
对short类型可以使用h前缀,因此%hd表示以十进制显示short整数,%ho表示以八进制显示short整数。h和l前缀都可以同u结合使用以表示无符号类型。比如,%lu表示打印unsigned long类型。
使用%c说明打印一个字符。
float类型必须至少能表示6位有效数字,取值范围至少为10-37到10+37。double类型和float类型具有相同的最小取值范围要求,但它必须至少能表示10位有效数字。
默认情况下,编译器将浮点常量当作double类型。
printf()函数使用%f格式说明符打印十进制记数法的float和double数字,用%e打印指数记数法的数字。
首先,printf()语句将输出传递给一个被称为缓冲区(buffer)的中介存储区域。缓冲区中的内容再不断地被传递给屏幕。标准C规定在以下几种情况下将缓冲区内容传给屏幕:缓冲区满的时候、遇到换行符的时候以及需要输入的时候。将缓冲区内容传送给屏幕活文件称为刷新缓冲区(flushing the buffer)。
C primer plus 学习随笔,布布扣,bubuko.com
原文:http://www.cnblogs.com/liuk11122/p/3721893.html