我正在使用openSG和C++创建应用程序.
谁能告诉我,为什么这些线(174ff):
Vec3f snakeDirection = (1,2,3);
std::cout << "direction"<< snakeDirection<<"\n";
Run Code Online (Sandbox Code Playgroud)
版画
direction 3,0,0
Run Code Online (Sandbox Code Playgroud)
我的场景的完整代码可以在这里找到:
在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);
Run Code Online (Sandbox Code Playgroud)
与说明相同:
Vec3f snakeDirection = 3;
Run Code Online (Sandbox Code Playgroud)
您可能打算写的是:
Vec3f snakeDirection = Vec3f(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
要么
Vec3f snakeDirection(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
要么
Vec3f snakeDirection{1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
要么
Vec3f snakeDirection = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)