根据我的理解,比较两种不同类型,包括short
和long
仍会导致转化。我 相信 ,short
将被提升为int
。但是,我似乎找不到将short
与long
进行比较的直接答案。
例如:
将Uint32
与Uint8
进行比较是不合适的。
向Uint32
添加Uint8
是否不合适?
Uint32 / Uint8分别是uint32_t
和uint8_t
的SDL中的速记类型定义。
编辑:
我想我应该对我的整体问题更加明确一点。我真的想知道是否比较或评估两种不同类型的int
s,它们是相同的标志(在示例中为unsigned
),但在 SIZE <中有所不同/ strong>(uint8_t
和uint32_t
),是不合适的事情。
由于隐式转换,可能是不正确的。由于转换以外的性能问题,可能是不正确的。也许是因为某些我不知道的可读性问题而感到不满。
在评论中,我们将两个相似的问题相关联,但他们正在将int
与long
进行比较。我认为它非常相似,但int
只是采用任何需要的版本(uint8_t
,sint16_t
等)的形式?
答案 0 :(得分:1)
我相信这个问题的回答是:http://en.cppreference.com/w/cpp/language/operator_arithmetic在“Conversions&#39;”的小节下。
否则,操作数具有整数类型(因为此时提升了bool,char,char16_t,char32_t,wchar_t和unscoped枚举)并且应用了积分转换以生成公共类型,如下所示:
如果两个操作数都是有符号的,或者两者都是无符号的,那么具有较小转换等级的操作数将转换为具有较大整数转换等级的操作数
所以我的问题的总体答案是,是的,有转换。从我所知道的,比较两个unsigned int
类型没有问题,只要您不与signed
和unsigned
进行比较。