我正在使用 openSG 和 C++ 创建应用程序。
谁能告诉我,为什么这些行(174ff):
Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<< snakeDirection<<"\n";
印刷
direction 3,0,0
我的场景的完整代码可以在这里找到:
我正在使用 openSG 和 C++ 创建应用程序。
谁能告诉我,为什么这些行(174ff):
Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<< snakeDirection<<"\n";
印刷
direction 3,0,0
我的场景的完整代码可以在这里找到:
在 C++ 中,表达式(1,2,3)
强制编译器将括号内的逗号解释为顺序求值运算符。顺序求值运算符是一个二元运算符,它将第一个操作数求为void
并丢弃结果,然后对第二个操作数求值并返回其值和类型。因此,表达式(1,2,3)
将按以下方式计算:
1
被评估并丢弃,然后(2,3)
被评估并(2,3)
返回结果。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};