unsigned int a = -1;printf("%d",a);输出为什么是-1??????

dongfeng0803 2014-04-10 11:13:55
如题,

#include<stdio.h>
#include<stdlib.h>

int main(){
unsigned int a = -1;
printf("%d\n",a);
return 0;
}


输出是-1;很疑惑,求解。
...全文
3110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongfeng0803 2014-04-10
  • 打赏
  • 举报
回复
谢谢各位,明白了!
赵4老师 2014-04-10
  • 打赏
  • 举报
回复
printf Type Field Characters The type character is the only required format field ; it appears after any optional format fields. The type character determines whether the associated argument is interpreted as a character, string, or number. The types C and S, and the behavior of c and s with printf functions, are Microsoft extensions and are not ANSI-compatible. Table R.3 printf Type Field Characters Character Type Output Format c int or wint_t When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character. C int or wint_t When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character. d int Signed decimal integer. i int Signed decimal integer. o int Unsigned octal integer. u int Unsigned decimal integer. x int Unsigned hexadecimal integer, using “abcdef.” X int Unsigned hexadecimal integer, using “ABCDEF.” e double Signed value having the form [ – ]d.dddd e [sign]ddd where d is a single decimal digit, dddd is one or more decimal digits, ddd is exactly three decimal digits, and sign is + or –. E double Identical to the e format except that E rather than e introduces the exponent. f double Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision. g double Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than –4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it. G double Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate). n Pointer to integer Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument. p Pointer to void Prints the address pointed to by the argument in the form xxxx:yyyy where xxxx is the segment and yyyy is the offset, and the digits x and y are uppercase hexadecimal digits. s String When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached. S String When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are printed up to the first null character or until the precision value is reached.
lin5161678 2014-04-10
  • 打赏
  • 举报
回复
引用 2 楼 thefirstz 的回复:
printf("%ud\n",a)
%u 没有%ud %ud的效果是输出一个无符号整数 然后紧接着输出一个'd'
赵4老师 2014-04-10
  • 打赏
  • 举报
回复
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
昵称很不好取 2014-04-10
  • 打赏
  • 举报
回复
printf("%ud\n",a)
CarlXie 2014-04-10
  • 打赏
  • 举报
回复
因为你的printf中用的是一般整数的输出。 无符号输出请用%u

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧