C语言溢出问题

2024年11月20日 16:35
有5个网友回答
网友(1):

int y;y=32768;printf(“y=%ld\n”,y);}时输出为y=68255744对于这样的题目要了解一些内存分配的知识。int类型在C语言中只占2个字节也就是-32768~32767之间而32768是超过了这个范围的,显然是放不下的,只有部分放在内存空间里(好比500ml矿泉水瓶子,只能放下500ml的水,你给它装600ml水,显然其中100ml就没装进去)%ld是个长整型是4个字节,所以它要读取4个字节的数据,所以读取了y的2个字节的数据以外还要再读取2个字节,拼成一个4个字节的数据。 后面的也是一样的,就不再说啦!

网友(2):

将 x 和 y 都定义成double !!溢出后会又从此值最小开始

网友(3):

不要用那么老的编译器了,vc++6.0也都快过时了,看看你用的编译器还把int类型译成2字节长度数据.用那种编译器,你会被它担误的!

网友(4):

溢出之后是系统随机取数

网友(5):

因为head的定义其实是
Node**
head
=
NULL;
head指向了NULL,这个内存地址是被系统禁止读写的。最后一句试图读取这个内存地址的数据,故报错,但不是溢出。