本帖最后由 lark 于 2015-7-29 17:09 编辑
感觉回答和我的问题不一样?我一直搞不懂
这是正常的代码,我修改的:#include<stdio.h>
#include<stdlib.h>
int main(void){
int i=-3;
char buffer[32];
//char buffer[3];
//这里的改动会造成数据溢出;将32个1或0存入只有3byte大小的buffer中,
//怎么可能?
struct bin{
signed char n:1;
}use;
//DEC&BIN mode;
while(i<=3){
use.n=i;
itoa(use.n,buffer,2);
printf("【use.n=%2d 【数值i=%d\n【use.n二进制=%s \n\n",use.n,i,buffer);
i++;
}
putchar('\n');
i=-3;
//HEX mode;
while(i<=3){
use.n=i;
printf("【use.n=%2d; sue.n的HEX:%8X ; Num %2d的HEX:%8X\n",use.n,use.n,i,i);
i++;
}
putchar('\n');
return 0;
}
运行结果:【use.n=-1 【数值i=-1
【use.n二进制=11111111111111111111111111111111
【use.n= 0 【数值i=0
【use.n二进制=0
【use.n=-1 【数值i=1
【use.n二进制=11111111111111111111111111111111
【use.n= 0 【数值i=2
【use.n二进制=0
【use.n=-1 【数值i=3
【use.n二进制=11111111111111111111111111111111
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num -3的HEX:FFFFFFFD
【use.n= 0; sue.n的HEX: 0 ; Num -2的HEX:FFFFFFFE
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num -1的HEX:FFFFFFFF
【use.n= 0; sue.n的HEX: 0 ; Num 0的HEX: 0
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num 1的HEX: 1
【use.n= 0; sue.n的HEX: 0 ; Num 2的HEX: 2
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num 3的HEX: 3
请按任意键继续. . .
之后,我将buffer[32]改成buffer[3];
运行结果:【use.n=-1 【数值i=825307441
【use.n二进制=11111111111111111111111111111111
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num -3的HEX:FFFFFFFD
【use.n= 0; sue.n的HEX: 0 ; Num -2的HEX:FFFFFFFE
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num -1的HEX:FFFFFFFF
【use.n= 0; sue.n的HEX: 0 ; Num 0的HEX: 0
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num 1的HEX: 1
【use.n= 0; sue.n的HEX: 0 ; Num 2的HEX: 2
【use.n=-1; sue.n的HEX:FFFFFFFF ; Num 3的HEX: 3
请按任意键继续. . .
|