【发布时间】:2017-04-26 18:17:06
【问题描述】:
我正在开发 Ingenico 的 EDC 终端。以下代码存在于以前的实现中。在调试时,我遇到了我难以理解的这段代码。
short bankPEM = 0;
//bankPEM = 41; //Chip
bankPEM = 17; //Swipe
//bankPEM = 801; //Fallback
switch(bankPEM)
{
case 021: cout<<"021"; break; //Swipe
case 051: cout<<"051"; break; //Chip
case 801: cout<<"801"; break; //Fallback
default: cout<<"Default"; break;
}
bankPEM 是一个短变量。我发现下面的执行观察:
- 当它包含
41时,case 051被执行。 - 当它包含
17时,case 021被执行。 - 当它包含
801时,case 801被执行。
我预计代码将执行 default 编号 1 和 2 的案例。
任何人都可以在这种情况下显示一些亮点。
我还将代码转换为汇编语言。调试完汇编代码后分享一下我的理解。
提前致谢。
【问题讨论】:
-
是八进制......
-
我已经删除了问题的装配标签,作为站立,与装配无关。如果需要,您可以稍后重新添加它。请记住,程序集标签总是带有特定的体系结构标签(例如 x86-64、arm、mips...)
标签: c switch-statement