C语言 宽度输出问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 22:08:57
float a=123.456;
printf("|%7.2f|,%-7.0f",a,a);
答案是 |123.46|和123□□□□
(□表示为空格)
我想问: 1.|%7.2f|输出后为什么是|123.46|,这里的"||"绝对值符号是不是与%7.2f无关,我感觉"||"是在printf("")输出里的,是不是这样理解的?
2.%7.2f表示一共输出7位,小数点后保留两位.但是输出后的结果一共是六位?(1 2 3 . 4 6)这是怎么回事? 还是 为什么可以四舍五入?

%7.2f是指a中的整数部分从右取7位,
小数部分取2位,所以是 123.46 ,前面应该是4个空格,楼下的不对
||不是绝对值,输出就是||,你的理解是正确的
%-7.0f就是a中的整数部分从左取7位,不足的补空格,小数部分取0位
所以是123后面4个空格

1.||确实与%7.2f无关,是printf输出的
2.第一个输出结果应为| 123.46|,1前面有空格,所以还是7位,你可以再试试
至于四舍五入,因为小数点后有3位,只能留两位,自然了。