阅读背景:

asm source code note 1.7_switch case分支的实现

来源:互联网 

源代码


// test1020.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

enum eNumberRange{
    eNumberRange_0_100 = 1,
    eNumberRange_100_200,
    eNumberRange_200_300,
    eNumberRange_Unknown
};

/// 判断一个输入数的范围
eNumberRange NumJudge(int iNumber);

int _tmain(int argc, _TCHAR* argv[])
{
    int     iDigIn  =   0;

    srand( (unsigned)time( NULL ) );
    iDigIn  =   rand();
    _tprintf(L"NumJudge(%d) = %d\r\n", iDigIn, NumJudge(iDigIn));

    getwchar();
    return 0;
}

/// 如果iNumber在源代码中给定值, Release版编译后, 会优化掉
eNumberRange NumJudge(int iNumber)
{
    eNumberRange eType = eNumberRange_Unknown;
    int iRange = (iNumber - iNumber % 100) / 100 + eNumberRange_0_100;

    switch (iRange)
    {
    case eNumberRange_0_100:
        eType = eNumberRange_0_100;
        break;

    case eNumberRange_100_200:
        eType = eNumberRange_100_200;
        break;

    case eNumberRange_200_300:
        eType = eNumberRange_200_300;
        break;

    default:
        eType = eNumberRange_Unknown;
        break;
    }

    return eType;
}
// test1020.cpp : Defines the entry



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: