c语言 入门的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 21:45:12
printf("a=%2d",300)
请问:百分号后的2表示什么意思?
我将300改为3000输出正常
改为30000输出也正常 改为300000 输出变成了:-276800
为什么??
2到底是什么意思啊?
有人说是 2位有效数字 可我改为3560 还是输出3560啊 两位有效数字应该就变成3500啊!!
在线等!

printf("a=%6.5d",300);
输出数字:a= 00300
你复制数字,看看,
.5是显示的位数,不足补零
6是右对齐.-6是左对齐.也就是说数字靠哪边
6补0后的数字仍不足六位的话,补空格
左对齐-->右补0

补充:
改为这个%ld就OK,范围问题,超出范围的正数,出来肯定是个负的
这关系都补码的问题,

2d的2表示的是输出a的两位数字 你个这输出语句输出输出的是300 不是a
改为30000后是应为输出超过该类型的范围

2就是输出多少位。比如你把它改成6,不够的位数用空格占位,输出就变成
a=(空格空格空格)300。
由于300是3位数,所以2的时候没什么变化。
第二个问题如各位所答,超出整形范围了。

因为d在这里的意思是整数,范围是-32768到32767之间,不管是300,3000,还是30000都在这个范围之内,而300000走出了这个范围,所以就出错啦

百分号后的2表示什么意思?

就是说保留2位有效数字

改为300000的话超出了int型变量的范围