|

楼主 |
发表于 2015-7-29 17:08:13
|
显示全部楼层
本帖最后由 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
- 请按任意键继续. . .
复制代码
|
|