专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
昨天跟一个朋友讨论一个问题:float n1=3.0; double n2=3.0; long n3=2000000000; long n4=1234567890; printf("%ld %ld %ld %ld\n", n1, n2, n3, n4); 在x86 32位机上执行,输出结果是:0 1074266112 0 1074266112 按照我的理解,float和long在32位机下都占4个字节,即使无法格式化为long进行输出,后面的值也不至于都出问题。 实际里面涉及以下的知识, 1. 把上面的代码反汇编可以看到: mov 0x [阅读全文] [PDF]
printf的格式控制的完整格式: %-0m.nl或h格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。 ⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。 --------------------------------------- 格式字符 [阅读全文] [PDF]
1 共2条 分1页