C语言:小知识点

  • 对于整数 n,.precision 表示最小输出宽度。n 本身的宽度为 6,当 precision 为 9 时,大于 6,要在 n 的前面补3 个 0;当 precision 为 4 时,小于 6,不再起作用。
  • 对于浮点数 f,.precision 表示输出精度。f 的小数部分有 6 位数字,当 precision 为 2 或者 4 时,都小于 6,要按照四舍五入的原则截断小数;当 precision 为 10 时,大于 6,要在小数的后面补四个 0。
  • 对于字符串 str,.precision 表示最大输出宽度。str 本身的宽度为 9,当 precision 为 5 时,小于 9,要截取 str 的前 5 个字符;当 precision 为 15 时,大于 9,不再起作用。
    如例子所示:
#include 

int main(int argc, const char * argv[]) {
    
    int n = 123456;
    double f = 882.923672;
    char *str = "abcdefghi";
    printf("n: %.9d %.4d\n", n, n);
    printf("f: %.2lf %.4lf %.10lf\n", f, f, f);
    printf("str: %.5s %.15s\n", str, str);
}

打印结果:

n: 000123456 123456
f: 882.92 882.9237 882.9236720000
str: abcde abcdefghi

flag 是标志字符。例如,%#o 中 flag 对应 #%-9d中 flags 对应-

标志字符 含义
- -表示左对齐。如果没有,就按照默认的对齐方式,默认一般为右对齐。
+ +用于整数或者小数,表示输出符号(正负号)。如果没有,那么只有负数才会输出符号。
空格 用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。
# 1、对于八进制(%o)和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是 0, 十六进制的前缀是 0x / 0X。2、对于小数(%f/%e/%g),# 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的, 加上 # 以后,即使没有小数部分也会带上小数点。

例如:

#include 

int main(int argc, const char * argv[]) {
    
    int m = 192, n = -943;
    float f = 84.342;
    printf("m=%10d, m=%-10d\n", m, m); //演示 - 的用法
    printf("m=%+d, n=%+d\n", m, n); //演示 + 的用法
    printf("m=% d, n=% d\n", m, n); //演示空格的用法
    printf("f=%.0f, f=%#.0f\n", f, f); //演示#的用法
    return 0;
}

输出:

m=       192, m=192       
m=+192, n=-943
m= 192, n=-943
f=84, f=84.

你可能感兴趣的:(C语言:小知识点)