突遇幽灵BUG

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工具逆向分析一下传参过程以期从中得到结果的时候,发现原来缺少一个‘,’的问题,不能复现!
这个……
没办法只能推断可能原因如下:

  1. 我将半角全角符号“,”输入错误
  2. 这个项目在关机的时候没有保存(虽然没有输入任何代码),可能在重启VS2012修复的过程中发生了故障所致
  3. 系统的某些随机因素(汗

1号可能原因迅速被实验否定。我打算重启电脑,试试这个随机因素汗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值