c++输出问题,输出为啥是8位数啊

#include

int main(void)
{
double a1, a4;
int a2, a3;

printf("请输入4个数:");
scanf("%lf %d %d %lf", &a1, &a2, &a3, &a4);
printf("\n计算结果为:%013.5lf\n", a1 + (a2 % a3 ) * a4);
return 0;

}

哪来的8位数,明明是7位数
除非你a1和a4本身就输入了8位数
%013.5lf要从右往左看
首先lf定义了它是按double型输出
.5表示小数点后有5位
13表示一共有13个字符
0表示不足13个字符前面补0
那么小数点后5位,小数点本身占1位,前面整数部分不就最少有7位吗

在printf中, %013.5lf 表示输出宽度为 13 位,如果不够则在前面用 0 补齐,保留 5 位小数。
所以结果是8位数,前面有5位0和符号位,只保留了后面的3位有效数字。

供参考:https://baike.baidu.com/item/printf/7467706?fr=aladdin