繁体   English   中英

将 short 与 long 进行比较是隐式转换吗?

[英]Is comparing a short to a long an implicit conversion?

据我了解,比较两种不同的类型,包括shortlong仍然会导致转换。 相信short会被提升为int 但是,我似乎无法找到将shortlong进行比较的直接答案。

例如:

它是不正当的比较Uint32Uint8

它是不合适的添加Uint32Uint8

Uint32/Uint8 分别是 SDL 中uint32_tuint8_t速记 typedef。

编辑:我想我应该对我的整体问题更明确一些。 我真的想知道是否比较或评估两种不同类型的int s,它们是相同的标志(在示例情况下, unsigned ),但大小不同( uint8_tuint32_t ),是不正确的做法.

由于隐式转换,它可能是不正确的。 由于转换以外的性能问题,它可能是不正确的。 也许是因为我不知道的某种可读性问题而皱眉。

在评论中,链接了两个类似的问题,但是他们将intlong进行比较。 我认为这非常相似,但是int只是采用所需版本的形式( uint8_tsint16_t等)?

我相信这个问题的答案是: http : //en.cppreference.com/w/cpp/language/operator_arithmetic在“转换”小节下。

否则,操作数具有整数类型(因为此时提升了 bool、char、char16_t、char32_t、wchar_t 和无作用域枚举)并应用整数转换来生成公共类型,如下所示:

如果两个操作数都是有符号的或都是无符号的,则转换等级较小的操作数将转换为整数转换等级较大的操作数

所以我的问题的总体答案是,是的,有一个转换。 据我所知,比较两个unsigned int类型没有问题,只要您不比较signedunsigned

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM