1

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

谁能告诉我,为什么这些行(174ff):

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

印刷

direction 3,0,0

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

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

4

1 回答 1

5

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

  1. 首先1被评估并丢弃,然后(2,3)被评估并(2,3)返回结果。
  2. 首先2被评估并丢弃,然后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};
于 2014-07-25T18:27:16.357 回答