【发布时间】:2017-10-04 01:44:50
【问题描述】:
据我了解,比较两种不同的类型,包括short 和long,仍然会导致转换。我相信short 将被提升为int。但是,在比较 short 和 long 时,我似乎找不到直接答案。
例如:
将Uint32 与Uint8 进行比较是否不当。
在Uint8 中添加Uint32 是否不当?
Uint32/Uint8 是 SDL 中 uint32_t 和 uint8_t 的简写类型定义。
编辑:
我想我应该对我的整体问题更明确一点。我真的想知道是否比较或评估两种不同类型的ints,它们是相同的标志(在示例中为unsigned),但在SIZE( uint8_t 和 uint32_t),是不恰当的做法。
可能由于隐式转换而不合适。由于转换以外的性能问题,它可能不合适。也许因为我不知道的某种可读性问题,它不被接受。
在 cmets 中,两个类似的问题被关联,但是他们将 int 与 long 进行比较。我认为这非常相似,但int 不只是采用所需版本的形式(uint8_t、sint16_t 等)吗?
【问题讨论】:
-
“如果操作数具有算术或枚举类型(作用域或非作用域),则通常的算术转换将按照算术运算符的规则对两个操作数执行。” 来源并遵循链接:en.cppreference.com/w/cpp/language/operator_comparison
-
Comparison 与任何其他算术运算具有相同的Usual Arithmetic Conversions。
-
C != C++。请仅使用其中一种语言进行标记,除非两者确实相关。
Uint32和Uint8是什么?它们不是 C++ 中的标准类型。
标签: c++ visual-c++