C ++ Vector值不正确

时间:2014-07-25 18:03:20

标签: c++ vector opensg

我正在使用openSG和C ++创建应用程序。

任何人都可以告诉我,为什么这些线(174ff):

Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<<  snakeDirection<<"\n";

打印

direction 3,0,0

我的场景的完整代码可以在这里找到:

http://pastie.org/9420616#20,177

1 个答案:

答案 0 :(得分:5)

在C ++中,表达式(1,2,3)强制编译器将括号内的逗号解释为顺序评估运算符。 顺序求值运算符是一个二元运算符,它将第一个操作数计算为void并丢弃结果,然后计算第二个操作数并返回其值和类型。因此,表达式(1,2,3)将按以下方式进行评估:

  1. 评估并弃置第一个1,然后评估(2,3)并返回结果(2,3)
  2. 评估并弃置第一个2,然后评估3并返回结果3
  3. 因此,表达式(1,2,3)的评估将返回3

    因此,陈述:

    Vec3f snakeDirection = (1,2,3);
    

    与陈述相同:

    Vec3f snakeDirection = 3;
    

    您可能打算写的是:

    Vec3f snakeDirection = Vec3f(1, 2, 3);
    

    Vec3f snakeDirection(1, 2, 3);
    

    Vec3f snakeDirection{1, 2, 3};
    

    Vec3f snakeDirection = {1, 2, 3};