明基w1120评测:我有两个关于c编程的简单问题(绝对简单,帮一下)

来源:百度文库 编辑:高校问答 时间:2024/04/29 19:41:21
1.
#include <stdio.h>

int main()
{
unsigned int age=-435;

printf("the number is %d",age);
return 0;
}

以上,unsigned的不是只能赋予正数吗,为何我定义为-435也可以。

2.
#include <stdio.h>

int main()
{
int age=-435;

printf("please enter a number:");
scanf("%d",age);
printf("the number you entered was %d.", age);
return 0;
}

在这个程序中,我先给了age一个值-435,然后又用scanf给它换一个值,但却不行,并不是我所输入的新值,还是原来的-435。我又没有用const,还是说若在之前给出值的话效果和const一样???
ok,第2个问题算解决了
等我看下第1个。。。。。

另外还有一题,看见的人帮忙啊。。
http://zhidao.baidu.com/question/9009385.html

1.无符号整数是指计算机把一个二进制串作为没有符号位的数,你虽然是给它了一个负数,但是转换到内存后,负数存的是二进制补码,最高位是符号位,1表示负数,此时若作为一个有符号数解释它,它就是负的;若作为无符号数解释,那么最高位的1将作数据处理。
例如1111 1111 1111 1111 是-1
和无符号数1111 1111 1111 1111 是一样的二进制,但是它是65535
区别就是第一个1,int型按符号解释它,unsigned int把它当数据
所以int 范围是-32768~32767; unsigned int是0~65535
2. scanf(\"%d\",&age);

第二个输入的表达式应该是scanf("%d",&age)

我急利的赞成三楼和二楼的说法~!却实是这个道理~! 在机器中 负号的二进制表示方法用1 正号用0

第二个就是楼上说的
第一个应该有强制转换的意思
-435其实也是以2进制的形式存放的
赋值的时候就把最前面表示符号的那个1也看成了数值的一部分