我最近在用c++做小游戏
遇到了一个很大的问题
编译失误了,我看了半天也没有看出来问题在哪里
运算符优先级问题。流操作符同时也作为位运算操作符存在,其优先级比较低,但有些运算符优先级更低,不加括号就要出问题,最典型的例子是“?:”三目运算符。给你的三目运算符加括号应该足够解决问题。
hi。
代码应该改成
cout << "伤害" << (wq[s - '0'].gj >= 0 ? "+" : "-") << wq[s - '0'].gj << "\n";
即给条件运算符套上一个小括号。
因为这里涉及到运算符优先级的问题,
优先级顺序<<
> >=
> ?:
所以在执行这段代码是,会将wq[s-'0'].gj
进行cout<<
操作,再进行比较。
因此会导致错误。