朋友你好,这个题是这样的,因为unsigned int a的取值范围为1,2,3······65535,若你程序是那样的,则运行的结果为65535,而不是-1,若你的程序为:
unsigned int a=65536;
printf("a=%d\n",a);
则结果为:a=1
若你的程序为
unsigned int a=65537;
printf("a=%d\n",a);
则结果为:a=2
不知你体会到没有,也就是一个圈的意思,若数大于范围,则它就从最后的那个数向后再推。这个重在意会。希望能帮到你。
追问谢谢你的详细答案,但是书上答案给的是 如果是%u,则输出的是65535;%d输出的是-1,和你的答案貌似有些冲突
追答你不要看书不书上,你要去电脑上运行一下才知道到底哪个是对的呀,实践才能出真理的。且原理也是这样的,没有错的。
本回答被网友采纳