相关疑难解决方法(0)

0是十进制文字还是八进制文字?

零总是为零,所以没关系.但在最近与我的朋友讨论时,他说今天几乎没有使用八进制文字.然后我突然意识到我的代码中几乎所有的整数文字都是八进制的,即0.

0根据C++语法是八进制文字吗?标准说什么?

c++ zero octal

326
推荐指数
2
解决办法
2万
查看次数

案例的数字前缀为0时,案例如何工作?

我正在研究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是一个短变量.我发现下面的执行观察:

  1. 当它包含时41,case 051执行.
  2. 当它包含时17,case 021执行.
  3. 当它包含时801,case 801执行.

我期望代码执行default数字1和2的情况.在这种情况下,任何人都可以显示一些亮点.

我也将代码转换为汇编语言.调试汇编代码后,我将分享我的理解.

提前致谢.

c switch-statement

0
推荐指数
1
解决办法
131
查看次数

如何使用整数工作添加十六进制值?

在下面的代码中,变量'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)

有人能让我知道这里发生了什么事吗?

c hex literals

-3
推荐指数
1
解决办法
85
查看次数

标签 统计

c ×2

c++ ×1

hex ×1

literals ×1

octal ×1

switch-statement ×1

zero ×1