小编Red*_*Red的帖子

模数是否溢出?

我知道(INT_MIN/-1)溢出,但(INT_MIN%-1)没有溢出.至少这是两个编译器中发生的事情,一个是前c ++ 11(VC++ 2010),另一个是后c ++ 11 GCC 4.8.1

int x = INT_MIN;
cout << x / -1 << endl; 
cout << x % -1 << endl;
Run Code Online (Sandbox Code Playgroud)

得到:

-2147483648
0
Run Code Online (Sandbox Code Playgroud)

此行为标准是定义的还是实现定义的?还有其他任何情况下除法操作会溢出吗?并且是否存在模数运算符溢出的情况?

c++ integer-overflow visual-c++ c++11

7
推荐指数
1
解决办法
1896
查看次数

VC++中的文字类型

我知道标准如下:

  • 以0开头的积分被解释为八进制.
  • 以0x或0X开头的积分被解释为十六进制.

整数文字的类型取决于其值和符号:

  • 默认情况下,小数是有符号的,并且具有值适合的最小类型int,long,long long.
  • 十六进制和八进制可以是有符号或无符号的,并且具有最小类型的int,unsigned int,long,unsigned long,long long,unsigned long long,其中文字值适合.
  • 没有类型为short的文字但这可以通过后缀覆盖.

但是VC++怎么样?!它似乎将十进制,八进制和十六进制视为相同,并且小数也允许使用无符号类型.

类似下面的代码:

cout << typeid(4294967295).name() << endl;
cout << typeid(4294967296).name() << endl;

cout << typeid(0xffffffff).name() << endl;
cout << typeid(0x100000000).name() << endl;
Run Code Online (Sandbox Code Playgroud)

得到:

unsigned long
__int64
unsigned int
__int64
Run Code Online (Sandbox Code Playgroud)

这是预期的,为什么它与标准不同?

c++ visual-c++ c++11

4
推荐指数
1
解决办法
273
查看次数

windbg中的十六进制到十进制

看起来WinDbg的默认值是以十六进制显示十进制和无符号整数的整数.有没有办法以十进制显示全部?

我尝试使用这里提到n命令

它给了我语法错误:

:086> n[10]
      ^ Syntax error in 'n[10]'
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

hex windbg decimal

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

标签 统计

c++ ×2

c++11 ×2

visual-c++ ×2

decimal ×1

hex ×1

integer-overflow ×1

windbg ×1