2015年3月8日 11:20:41
做C语言类型修饰符的练习时,遇到一个编译器或者其它系统库BUG,
#include <stdlib.h>
#include <stdio.h>
int main()
{
char cCharA,cCharB;
unsigned char ucCharA,ucCharB;
cCharA=ucCharA=127;
cCharB=ucCharB=128;
printf("%d,%u,%d,%u",cCharA,ucCharA,cCharB,ucCharB);
system("pause");
return 0;
上图的结果是:
127,127-128,128
中间少了一个“,”号,我以为这是老师所安排的体验内容。于是在代码中又多加了一个“,”变成下图以便于结果对比:
printf("%d,%u,,%d,%u",cCharA,ucCharA,cCharB,ucCharB);
结果是:
127,127,,-128,128
推断原因可能是:解析上面出了问题。
当我做相关对比的时候,发现原来的“,”一切都又正常显示。
再次推断这个BUG可能经过一次printf后,就会修正。
但是当我准备用OD工具逆向分析一下传参过程以期从中得到结果的时候,发现原来缺少一个‘,’的问题,不能复现!
这个……
没办法只能推断可能原因如下:
- 我将半角全角符号“,”输入错误
- 这个项目在关机的时候没有保存(虽然没有输入任何代码),可能在重启VS2012修复的过程中发生了故障所致
- 系统的某些随机因素(汗
1号可能原因迅速被实验否定。我打算重启电脑,试试这个随机因素汗。