小编acc*_*uck的帖子

如何在C++中遍历堆栈?

是否可以std::stack在C++中遍历?

使用以下方法遍历不适用.因为std::stack没有会员end.

std::stack<int> foo;

// ..

for (__typeof(foo.begin()) it = foo.begin(); it != foo.end();  it++)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

c++ stack traversal

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

为什么IDIV为-1会导致浮点异常?

据我了解,idiv %ebx将除以edx:eax32 位(按顺序连接成 64 位值)ebx。

但是,当我尝试将0x00000000:0xfffffffb(0 和 -5)除以0xffffffff(-1)时,出现浮点异常。

有人可以解释为什么吗?我很困惑为什么会发生这种情况,因为我毕竟没有除以 0。


请注意,我知道我需要签署扩展edx:eax才能实现我想要的,即计算-5/-1。然而,即使没有符号扩展,下面的内容也不会导致 FPE。

gdb 截图

x86 assembly gnu-assembler att

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

函数的const参数是否自动通过引用传递?

如果我有一个如下所示的代码:

void foofunc(const int fooarg)
{
    // something here
}
Run Code Online (Sandbox Code Playgroud)

是fooarg按值或按引用传递?至于fooarg是const不是会得到修改,因此,如果按引用传递是确定的.


如果我有一个看起来像下面的代码:

void foofunc(int fooarg)
{
    // something here, but fooarg is not gonna get modified
}
Run Code Online (Sandbox Code Playgroud)

将fooarg通过值或通过引用传递,也将是const或不是?情况与上述相同.它不会被修改.

c++ const pass-by-reference pass-by-value

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