zoukankan      html  css  js  c++  java
  • 山谈c中printf格式修饰符

    废话不多说,简单粗暴地上图。

    (一)初始定义

    (二)运行结果

    (三)规律总结

    对于如下:

    printf("%7.4d",12);

    printf("%4.7f",123.456);

    printf("%12.7s","hello");

    等输出语句,

    归纳成形如printf("%a.bc",d)格式的输出语句,其中d为int/float/char[]等类型变量,c为d/f/s等格式符,a为前修饰符,b为后修饰符。

    规律如下:

    1.前修饰符的绝对值表示输出宽度限制;

    2.后修饰符表示输出精度限制;

    3.首先考虑后修饰符,然后再考虑前修饰符;

    4.int型变量要求输出数字位数不低于精度限制,如果低于则用0在数字前补齐;

    5.float型变量要求输出小数点后保留位数等于精度限制,多余部分被剪切掉;

    6.char[]型变量要求输出字符串长度不高于精度限制,如果高于则将字符串后面多余的剪切掉;

    7.对于上三者变量都要求输出宽度不低于宽度限制,如果低于,则用空格补齐;

    8.前修饰符可正可负,后修饰符必须为正。

    8.前修饰符如果为正数,则补齐宽度的空格在左,如果为负数,则补齐宽度的空格在右;

    9.额外记忆:如果char[]型变量前修饰符以0开头,则补齐宽度不是用空格,而是用0。

    (四)举例记忆

    【例1】printf("%10.7s","12345678");

    首先考虑后修饰符-精度限制为7;要求输出字符串长度不高于精度限制,如果高于则将字符串后面多余的剪切掉,"12345678"长度为8,多出一个,则将后面的“8”剪切掉,得到“1234567”;

    然后考虑前修饰符-输出宽度限制为10;此时要求输出宽度不低于宽度限制,如果低于,则用空格补齐,现在长度为7需要补充3个空格达到宽度10;

    因为前修饰符为正数,所以补齐宽度的空格在左,即输出格式应为“###1234567”//为便于理解,空格符我用#符号代替。

    【例2】printf("%-7.4d",123456);

    首先考虑后修饰符-精度限制为4;要求输出数字位数不低于精度限制,此时位数为6不低于4,满足条件;

    然后考虑前修饰符-输出宽度限制为7;此时要求输出宽度不低于宽度限制,如果低于,则用空格补齐,现在长度为6需要补充1个空格达到宽度7;

    因为前修饰符为负数,所以补齐宽度的空格在右,即输出格式应为“1234566#”//为便于理解,空格符我用#符号代替。

    附图:验证分析正确

  • 相关阅读:
    灾难 BZOJ 2815
    消耗战 BZOJ 2286
    征途 BZOJ 4518
    纸箱堆叠 BZOJ 2253
    Gate Of Babylon BZOJ 1272
    std::string::npos mean
    [转]整理索引碎片,提升SQL Server速度
    笔记本win7制作wifi
    关闭linux下的使用的端口
    linux多线程
  • 原文地址:https://www.cnblogs.com/ywsswy/p/6650493.html
Copyright © 2011-2022 走看看