格式转换字符用于将待输出的数据转化为指定格式
数值若不是格式转换的类型,会被强制转换,如1.23通过%d输出成1
格式转换字符 | 作用 |
%d、%ld | 有符号32位十进制整数 |
%lld | 有符号64位十进制整数 |
%nd | 以n位固定位宽输出的整数,若超出按原样输出 |
%u | 无符号32位十进制整数 |
%c | 一个字符 |
%s | 一个字符串 |
%f | 保留7位精度有效小数 |
%.nf | 强制保留n位输出小数 |
%lf | 保留16位精度有效小数 |
%e | 以指数形式输出实数 |
%% | 百分号 |
(1)%nd的使用
第一组代码
#include <stdio.h>
int main()
{
printf("%5d",2);
}
VS运行结果如下
此处2前有4个空格,即加上2本身有5个位宽
再看下面这组
#include <stdio.h>
int main()
{
printf("%2d",200);
}
VS运行结果如下
待输出的数据超出格式后按原样输出了
(2)%c的使用
第一组代码
#include <stdio.h>
int main()
{
printf("%c",a);
}
VS报错如下
这样的原因是a在不加小引号时被编译器视作未定义的变量,’a'才是常量
正确的代码和运行结果如下
#include <stdio.h>
int main()
{
printf("%c",'a');
}
(3)%s的使用
字符串在不加大引号时也被编译器视作未定义的变量
错误的代码和运行结果如下
加上大引号就对了
#include <stdio.h>
int main()
{
printf("%s","I am happy!");
}
(4)%.nf的使用
%.nf可以用来保留固定位数精确度的小数
#include <stdio.h>
int main()
{
printf("%.2f",0.123);
}
VS运行结果如下
很明显,三位精确度变成两位精确度,某些情况下可节省内存空间