零总是为零,所以没关系.但在最近与我的朋友讨论时,他说今天几乎没有使用八进制文字.然后我突然意识到我的代码中几乎所有的整数文字都是八进制的,即0.
0根据C++语法是八进制文字吗?标准说什么?
我正在研究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;
}
Run Code Online (Sandbox Code Playgroud)
bankPEM是一个短变量.我发现下面的执行观察:
41,case 051执行.17,case 021执行.801,case 801执行.我期望代码执行default数字1和2的情况.在这种情况下,任何人都可以显示一些亮点.
我也将代码转换为汇编语言.调试汇编代码后,我将分享我的理解.
提前致谢.
在下面的代码中,变量'b'保持值'133',这非常简单.变量'a'怎么样?为什么'131'?
我看到唯一的区别是'015'而不是'15'.
#include<stdio.h>
int main()
{
int a,b,c;
a=015 + 0x71 +5;
printf("%d\n",a); // prints '131'
b=15 + 0x71 +5;
printf("%d\n",b); // prints '133'
}
Run Code Online (Sandbox Code Playgroud)
有人能让我知道这里发生了什么事吗?