24小时热门版块排行榜    

CyRhmU.jpeg
查看: 866  |  回复: 16
当前主题已经存档。

zenghui09

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流,欢迎常来。 8-7 19:15
为什么是const啊,常量吗?那可能不行. switch后面应该是变量.
只要case后面的东西和switch后的东西可以进行==判断就可以
还有,最好一个case后面加break
11楼2009-07-21 12:47:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurenyong

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流,欢迎常来。 8-7 19:15
查语法书上很清楚
应该可以的,只要两个值能比. Ulong就全是Ulong。
如果两个有一个类型不是,就有问题出现,比方说低位对齐比较。之所以出现这种现象,原因在于强制类型转换啊
查书,书上全有。问这种问题严格来说是不应该的
难得糊涂
12楼2009-07-21 15:12:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurenyong

木虫 (正式写手)


bslt(金币+1,VIP+0):感谢交流,欢迎常来。 8-7 19:15
程序的问题实在有疑问,可以自己编一段做和实验。自己找到原因胜过读十年书啊
难得糊涂
13楼2009-07-21 15:14:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

leolau0318

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
bslt(金币+1,VIP+0):感谢交流,欢迎常来。 8-7 19:16
switch后面可以跟整型,字符型,enum型变量
但是不能是浮点型(float/double)
你的程序是合法的
14楼2009-08-05 10:28:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gf0204


小木虫(金币+0.5):给个红包,谢谢回帖交流
上机操作不就知道了,多上机。
15楼2009-08-23 23:48:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phoenix8848


小木虫(金币+0.5):给个红包,谢谢回帖交流
环境 : Intel T2050 @1.6GHz, 2.0GB RAM Mobile Intel 945GM Express Chipset Family
Windows XP SP2 Pro v5.1.2600
Visual Studio 2005 SP1 Team Suit

代码:
#include
using namespace std;

int main()
{
        const long l_idx = 0x00010000;

        switch(l_idx)
        {
        case 0x00010000:
                cout << "case 1" << endl;
                break;
        case 0x00000000:
                cout << "case 2" <                 break;
        default:
                cout << "error" << endl;
                break;
        }

        return 0;
}


汇编:
--- e:\visual studio 2005\projects\democpp\ex_01\ex_01_02.cpp ------------------
#include
using namespace std;

int main()
{
004114B0  push        ebp  
004114B1  mov         ebp,esp
004114B3  sub         esp,0D0h
004114B9  push        ebx  
004114BA  push        esi  
004114BB  push        edi  
004114BC  lea         edi,[ebp-0D0h]
004114C2  mov         ecx,34h
004114C7  mov         eax,0CCCCCCCCh
004114CC  rep stos    dword ptr es:[edi]
        const long l_idx = 0x00010000;
004114CE  mov         dword ptr [l_idx],10000h

        switch(l_idx)
004114D5  mov         dword ptr [ebp-0D0h],10000h
004114DF  cmp         dword ptr [ebp-0D0h],0
004114E6  je          main+73h (411523h)
004114E8  cmp         dword ptr [ebp-0D0h],10000h
004114F2  je          main+46h (4114F6h)
004114F4  jmp         main+0A0h (411550h)
        {
        case 0x00010000:
                cout << "case 1" << endl;
004114F6  mov         esi,esp
004114F8  mov         eax,dword ptr [__imp_std::endl (41A338h)]
004114FD  push        eax  
004114FE  push        offset string "case 1" (41780Ch)
00411503  mov         ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411509  push        ecx  
0041150A  call        std:perator<< > (41114Fh)
0041150F  add         esp,8
00411512  mov         ecx,eax
00411514  call        dword ptr [__imp_std::basic_ostream >:perator<< (41A320h)]
0041151A  cmp         esi,esp
0041151C  call        @ILT+410(__RTC_CheckEsp) (41119Fh)
                break;
00411521  jmp         main+0CBh (41157Bh)
        case 0x00000000:
                cout << "case 2" < 00411523  mov         esi,esp
00411525  mov         eax,dword ptr [__imp_std::endl (41A338h)]
0041152A  push        eax  
0041152B  push        offset string "case 2" (417804h)
00411530  mov         ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411536  push        ecx  
00411537  call        std:perator<< > (41114Fh)
0041153C  add         esp,8
0041153F  mov         ecx,eax
00411541  call        dword ptr [__imp_std::basic_ostream >:perator<< (41A320h)]
00411547  cmp         esi,esp
00411549  call        @ILT+410(__RTC_CheckEsp) (41119Fh)
                break;
0041154E  jmp         main+0CBh (41157Bh)
        default:
                cout << "error" << endl;
00411550  mov         esi,esp
00411552  mov         eax,dword ptr [__imp_std::endl (41A338h)]
00411557  push        eax  
00411558  push        offset string "error" (4177FCh)
0041155D  mov         ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411563  push        ecx  
00411564  call        std:perator<< > (41114Fh)
00411569  add         esp,8
0041156C  mov         ecx,eax
0041156E  call        dword ptr [__imp_std::basic_ostream >:perator<< (41A320h)]
00411574  cmp         esi,esp
00411576  call        @ILT+410(__RTC_CheckEsp) (41119Fh)
                break;
        }


        return 0;
0041157B  xor         eax,eax
}

结论:可以运行.不过受机器位限制.
16楼2009-08-24 10:32:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

entire2008

新虫 (初入文坛)

   
     一切都需要实践来检验。。。上机运行是硬道理!!
17楼2009-08-25 13:38:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 entire2008 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见