我正在使用openSG和C ++创建应用程序。
任何人都可以告诉我,为什么这些线(174ff):
Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<< snakeDirection<<"\n";
打印
direction 3,0,0
我的场景的完整代码可以在这里找到:
答案 0 :(得分:5)
在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};