From: http://www.cnblogs.com/lidp/articles/1696079.html
1) %d和%u的区别
2) 使用64位整数
LONGLONG llValue;
int iValue;
printf("%d, %d", llValue, iValue);
iValue的值永远不会被输出,第一个%d输出的是llValue的低32位,第二个%d输出的是llValue的高32位。所以程序应该修改为:
printf("%I64d, %d", llValue, iValue);
这两个例子体现了printf()的类型不安全性。如果printf()的参数的数据类型被修改,而格式字符串不作相应修改的话,这样的隐藏错误有时很难发现,所以更改数据类型时要注意检查是否需要修改相应的格式字符串,否则编译器连警告信息都不会出现。