gpt4 book ai didi

c++ - C++ 语言标准对 static_cast 如何处理减小整数的大小有何规定?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:30 24 4
gpt4 key购买 nike

我想知道 C++ 语言标准针对以下情况指定的规则:

long x = 200;
short y = static_cast<short>(x);

y 是否保证为 200,还是标准将其留给实现来决定?各种编译器对标准的遵守程度如何?

最佳答案

在本例中为 static_cast<>是一个“显式类型转换”。该标准对 4.7/3“积分转换”中的积分转换有这样的说法:

If the destination type is signed, the value is unchanged if it can be represented in the destination type (and bit-field width); otherwise, the value is implementation-defined.

short保证能够保持值(value) 200 (short 必须至少为 16 位),那么对于您的特定示例,答案是肯定的。

各种编译器都很好地遵循了这种行为 - 自 C 语言出现之前的 ANSI 时代以来就一直如此,而且如此多的代码取决于编译器供应商似乎甚至不愿发出有关截断可能性的警告的行为。

p>

关于c++ - C++ 语言标准对 static_cast 如何处理减小整数的大小有何规定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com