【发布时间】:2018-05-13 00:58:53
【问题描述】:
我正在使用 SFML 类中的整数来获取当前窗口的 y 坐标:
sf::window.getSize().y
这带来了例如价值:
300
但我想要负值,所以我把减号放在前面:
- sf::window.getSize().y
然后我明白了:
4294966696
为什么会这样?
【问题讨论】:
-
getSize() 是否返回无符号值?尝试
- (int)window.getSize().y在取反之前将值转换为有符号整数。 -
成功了,谢谢。为什么这个?如果可以在答案块中解释,我可以关闭这个问题。
-
无符号类型不能表示负值。对
unsigned取反是由标准指定使用模运算,因此-1给出了该类型可以表示的最大值。在否定之前转换为有符号类型允许表示负值。 -
y是整数,不是类 -
现在我明白了。事实上 'y' 是一个无符号整数,它解释了这种行为。谢谢大家。