| 查看: 1223 | 回复: 16 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】C语言中switch 语句的疑问
|
|||
|
【求助】C语言中switch 语句的疑问 switch (const) case 0x00010000:语句块; 。。。 这样的用法正确吗? 其中,const 为一个ulong 型变量 |
» 猜你喜欢
面上意见出来了
已经有10人回复
导师吐槽:我怎么摊上了这么个极品研究生!
已经有9人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有5人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有5人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有7人回复
售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急
已经有4人回复
麻烦专家们看看评委们的意见(F口面上)
已经有10人回复
售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急
已经有9人回复
售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急
已经有4人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有4人回复
★
小木虫(金币+0.5):给个红包,谢谢回帖交流
小木虫(金币+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" < 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<<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" < 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<<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<<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
2楼2009-06-25 17:30:10
3楼2009-06-27 00:09:31
4楼2009-06-28 09:04:01









回复此楼
perator<<
谢谢楼上的回答,是的ulong 我这里是unsigned long 的简写,是4字节的长整型,
30