c语言 入门的问题

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,范围问题,超出范围的正数,出来肯定是个负的
这关系都补码的问题,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-04
2d的2表示的是输出a的两位数字 你个这输出语句输出输出的是300 不是a
改为30000后是应为输出超过该类型的范围
第2个回答  2009-09-04
2就是输出多少位。比如你把它改成6,不够的位数用空格占位,输出就变成
a=(空格空格空格)300。
由于300是3位数,所以2的时候没什么变化。
第二个问题如各位所答,超出整形范围了。
第3个回答  2009-09-04
因为d在这里的意思是整数,范围是-32768到32767之间,不管是300,3000,还是30000都在这个范围之内,而300000走出了这个范围,所以就出错啦
第4个回答  2009-09-04
百分号后的2表示什么意思?

就是说保留2位有效数字

改为300000的话超出了int型变量的范围
相似回答