网站首页 > 技术文章 正文
不同语言格式串五花八门,究其本质,无非是如何处理格式串和变量对应关系。
示例: 输出右对齐宽度为8个字符整形数据
- C/ObjC/Java/Ruby/Go
- %8d
直接依赖库函数解析格式串,区分格式符前缀%、对齐长度、对齐方向、类型等,做填充、对齐操作。 - C++
- std::setw(8)和std::right
C++ 输出流对象提供方法,设置对齐长度和对齐方向。 - C#
- "{0,8:D}"
和C语言风格很像,不过用新的展示格式,冒号分隔。 - Python
- {num:8d}
最接近C语言风格。 - Rust
- {:8}
- VB.NET
- String.Format("{0,8}", num)
- Pascal
- 整型a输出宽度为8:a:8
格式串语法
- C语言: %[flag][min width][.precision][length]format
- min width/precision/length在不同语境部分可选或要忽略
- Java: %[arguments_index$][flags][field width][.precision]format
浮点数小数位
如下示例保留两位小数:
- 仓颉:float_var.format(".2")
- C/ObjC/C++: "%.2f"
- Pascal:float_var:0:2
不同进制
- C语言 %o和%x代表八进制和十六进制。
- C# {:X}代表十六进制,例如#34;{12:X}" 输出C.
带前缀的格式串
- C/ObjC/C++ 允许用%#o和%#x分别代表加前缀的八进制和十六进制。
即,15的%#o格式是017, %#x格式为0xf. 当然,%#X对应为0XF.
格式串大小写
- C语言%g/%e代表浮点数,大写%G和%E功能一样,但表达指数的E用大写,而非前面的小写。
看起来另类的格式串
- C语言“%8%”会输出一个百分号%, 且左侧有7个空格。
- C语言%n代表已经输出的字节个数。
printf("hello我%n\n", &b); // 假设字符串UTF-8编码,b == 8
格式串补零
- C语言整数格式符%d/%o/%x/%u也可指定精度代表最少位数,最终输出位数不足,会补0.
printf("%.2d/%.2d/%.4d\n", 2, 12, 12345); // 02/12/12345 - %02d和%.2d一样可以补0.
宽度和精度可被指定?
- C语言可以动态指定格式串宽度和精度:
printf("%.*d\n", 2, 1); // 输出宽度是2,输出01,宽度2也可以用变量传入
废弃的格式符
- C语言早期,%D指代%ld, %O指代%lo, %X指代%lx, 但后来被发现其实%X也可以指代十六进制大写形式,后来这三个大写格式符被抛弃了。
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
- 上一篇: 「C初级」.浮点数的困惑
- 下一篇: C|整数、浮点数的向上、向下溢出
猜你喜欢
- 2025-01-18 FX3U小数运算
- 2025-01-18 JAVA中的浮点数与二进制
- 2025-01-18 「创新班」007. float()函数 -- 把数字字符串(或整数)转为浮点数
- 2025-01-18 谈谈小数的表示方法之定点数
- 2025-01-18 浮点数/小数 的6种舍入方式
- 2025-01-18 NOI / 1.1编程基础之输入输出
- 2025-01-18 S7-200 SMART 数据类型(上)
- 2025-01-18 西门子PLC数据类型——浮点数
- 2025-01-18 畅谈计算机整数,浮点数存储和运算
- 2025-01-18 C|整数、浮点数的向上、向下溢出
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)