- %d —— int
- %ld —— long int
- %c —— char
- %f —— float
- %u —— 无符号数
- %hd —— 短整型
- %lf —— double
- %x —— 十六进制输出 int、long int 、short int
- %o —— 八进制输出
- %s —— 字符串
以上,便是C语言中包含的占位符。
注意:
- C语言中是没有boolean、byte和String类型的。
- C语言中的boolean用0表示表示false,非0表示true。
- 不同类型的数值,要用其对应的占位符去输出,不然会导致精度的丢失。
- 由于C语言中是没有String类型的,所以如果要输出字符串,我们要这样做:
#include<stdio.h>
#include<stdlib.h>
main(){
char* c="q w e r ";
printf("c的内容是:%s\n\n",c);
system("pause");
}
得到的结果是:
- %x可以用来输出地址。
#include<stdio.h>
#include<stdlib.h>
main(){
char c[]={'a','b'};//C语言数组中[]不能写在char的后面,要紧跟变量后面
printf("c的内存地址是:%#x\n\n",&c); //%x中加一个#号,就可以把这个内存地址变为16进制
system("pause");
}
得到的结果是:
- 在C语言中默认保留小数点后6位,如果不仅限于6位小数,可自定义%.Nf(这个N可代表任意数字)。
举个栗子,当我写出这样的代码时:
#include<stdio.h>
#include<stdlib.h>
main(){
float f=1.234;
double d=1.23456789;
printf("f的值为%f\n",f);
printf("d的值为%lf\n\n",d);
system("pause");
}
得到的是这样的结果:
可以看到,f打印出来,屁股后面多了三个0,而d的屁股则被截掉了一位数并做了四舍五入的操作,如果想要完整的显示出来,我们可以这样:
#include<stdio.h>
#include<stdlib.h>
main(){
float f=1.234;
double d=1.23456789;
printf("f的值为%f\n",f);
printf("d的值为%lf\n\n",d);
printf("f的值为%.3f\n",f);//限制输出小数点后3位
printf("d的值为%.8lf\n\n",d);//限制输出小数点后8位
system("pause");
}
就能得到完整的结果了: