C语言题目 高手请进! 急急急!!!

(1)以下程序的结果是:
unsigned int a=65535;
printf("%d",a);

答案是 -1
为什么呢?
详解

(2)以下程序的结果是:
printf("aabb\r\\\'123%%5");

答案是 \'123%5
为什么呢?
详解
65535的二进制形式在哪找得到啊?

那第二题的答案为什么不是\’123%%5呢?

第1个回答  2008-08-01
unsigned int a=65535;
printf("%d",a); 改成printf("%u",a);
%d 是输出int 的格式符范围是.-32768~32767
.%u 是输出unsigned int ,范围是0~65535 .

2.\r表示回车,将光标移到行首,因此后面的字符将之前的aabb覆盖了.
\\是\的转义符
\'是'的转义符
第2个回答  2008-08-01
%d表示将变量以有符号整数形式输出,65535的二进制形式是11111111 11111111,对应的有符号整数就是-1.

\r表示回车,将光标移到行首,因此后面的字符将之前的aabb覆盖了.
\\是\的转义符
\'是'的转义符
......本回答被提问者采纳
第3个回答  2008-08-01
1.超出int范围,实际将它判断为-1的依据,就是补码那些东西了

2.注意\r是回到本行的开头,之后输出的\'123%5,会将原来输出的aabb给覆盖掉(%%是输出%的方式)
第4个回答  2008-08-01
printf("%d",a);
要把这个改成printf("%ld",a);
第5个回答  2008-08-01
1.益出了(少三点水)
2.aabb被覆盖