C语言 a=-15; printf("%u,%10u"); 结果是4294967281,4294967281 为什么? 不是15吗?

还有第二个为什么直接把 u 前面的 10 忽略掉了??
偶刚学C语言,很多东东都不懂,请位大侠讲解下O(∩_∩)O~~

为什么不是15,因为u是无符号整型,a是-15,有符号,这里涉及的是内存存储问题,不是单单的把负号去掉的问题
10忽略,因为10在这里是要求左对齐输出10位数,不够的用空格补齐,你输出的这些数字正好十位,所以有没有是一样的结果
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-30
1、u指的是无符号数,并不是绝对值
2、4294967281本来就有10位数字,所以%10u也正好把它全部不多不少的输出来
那个10指的是最少输出的位数,而不是指空格的个数
相似回答