标准对基本类型之间的static_cast有什么看法?

时间:2016-08-22 06:54:07

标签: c++ casting

我很想知道关于类型之间的强制转换的标准(不是类)。

例如,

unsigned long long int ulli = std::numeric_limits<unsigned long long int>::max();
char c = static_cast<char>(ulli);

在我的编译器(VS2015)上,这甚至不会发出警告,(在这种情况下c = -1)。

size of charsize of unsigned long long int不一样。这是个问题吗?这种行为是不确定的?

标准是否说明在您尝试将变量转换为较小变量的情况下会发生什么?

是否安全?

相反的情况呢,试图将较小的值转换为较大的值?

char c = std::numeric_limits<char>::max();
unsigned long long int ulli = static_cast<unsigned long long int>(c);

标准是否保证它能够正常工作,还是由编译器来保护开发人员?

0 个答案:

没有答案