相关疑难解决方法(0)

C++中的" - >"运算符是什么?

看完后隐藏功能和C++/STL的暗角comp.lang.c++.moderated,我完全惊讶的是,下面的代码片断编译并在两个Visual Studio 2008和G ++ 4.4的工作.

这是代码:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设这是C,因为它也适用于GCC.标准中定义了哪里,它来自何处?

c++ code-formatting standards-compliance operators

8590
推荐指数
27
解决办法
75万
查看次数

对std :: vector的迭代:unsigned vs signed index变量

在C++中迭代向量的正确方法是什么?

考虑这两个代码片段,这个工作正常:

for (unsigned i=0; i < polygon.size(); i++) {
    sum += polygon[i];
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (int i=0; i < polygon.size(); i++) {
    sum += polygon[i];
}
Run Code Online (Sandbox Code Playgroud)

产生warning: comparison between signed and unsigned integer expressions.

我是C++世界的新手,所以unsigned变量对我来说有点可怕,我知道unsigned如果使用不正确,变量会很危险,所以 - 这是正确的吗?

c++ unsigned signed stl

452
推荐指数
10
解决办法
75万
查看次数

我应该避免哪些C++陷阱?

我记得首先在STL中学习矢量,经过一段时间后,我想在我的一个项目中使用bool矢量.在看到一些奇怪的行为并做了一些研究之后,我了解到一个bool矢量并不是真正的bool矢量.

在C++中还有其他常见的陷阱需要避免吗?

c++ stl

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

使用无符号索引进行反向'for'循环的最佳方法是什么?

我第一次尝试反向for循环 n次做的事情是这样的:

for ( unsigned int i = n-1; i >= 0; i-- ) {
    ...     
}
Run Code Online (Sandbox Code Playgroud)

这是失败的,因为无符号算术 i保证总是大于或等于零,因此循环条件将始终为真.幸运的是,在我不得不想知道为什么循环无限执行之前,gcc编译器警告我"无意义的比较".


我正在寻找一种解决这个问题的优雅方法,请记住:

  1. 它应该是一个倒退的循环.
  2. 循环索引应该是无符号的.
  3. n是无符号常数.
  4. 它不应该基于无符号整数的"模糊"环算术.

有任何想法吗?谢谢 :)

c for-loop

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

为什么C或C++不允许通过值传递数组来起作用

C和C++允许按值将结构和对象传递给函数,虽然可以防止按值传递数组,为什么呢?

c c++

8
推荐指数
4
解决办法
2979
查看次数

C++ - 如何遍历从头到尾的列表?

我想从头到尾显示我的列表.喜欢:

for (std::list<T>::const_iterator it = list.end(); it != list.begin(); --it)
Run Code Online (Sandbox Code Playgroud)

问题是当它在第一个元素(list.begin())中时它不会进入.我怎样才能做到这一点?

c++ for-loop stl list

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

"有符号/无符号不匹配"警告(C4018),循环递减

我应该怎么做C++代码中的"签名/无符号不匹配"警告,如下所示:

for (int i = vector.size() - 1; i >= 0; --i) // OK
{
    if (i < vector.size() / 2) // warning C4018: '<': signed/unsigned mismatch
        // ... 
}
Run Code Online (Sandbox Code Playgroud)

(一个人为的例子,但它证明了这个问题.)

如何处理"签名/未签名的不匹配"警告(C4018)?说要size_t用于循环变量,但是这对于终止于0的递减循环不起作用.它在没有警告的情况下编译,但是整数在运行时溢出(或者它是下溢?)并且变为4294967295.

c++ visual-c++

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

如何使用范围将这个 python for 循环转换为 C++?

考虑这个for使用 a 的Python循环range

for i in range(n-2, -1, -1):
Run Code Online (Sandbox Code Playgroud)

随着循环迭代,i采用值n-2, n-3, 直到0

C++ 中的等效代码是什么?


这个问题几乎是从另一个已删除的问题中逐字复制的。

c++ python for-loop

-18
推荐指数
2
解决办法
559
查看次数