static_cast是否依赖于绑定类型的实现?

时间:2016-10-26 16:06:05

标签: static-cast endianness

我在看static_cast with bounded types

行为是否特定于实施?换句话说(给定16位短路和32位长)是

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

保证产生y = 4464(x的低16位)?或者只在小端机器上?

我一直认为它会,但我在大端机器上得到奇怪的结果,并试图找出它们。

这是实际问题。我有两个time_t(大概是64位),我“知道”将始终在彼此的合理秒数内。我想用printf显示这种差异。代码是多平台的,所以我不是在担心time_t的基础类型是什么,而是在做一个传递static_cast&lt; int&gt;(time2-time1)的printf(“%d”)。尽管printf处于以(time2!= time1)为条件的块中,但我看到零。 (printf在库中;没有使用cout的合理可能性。)

static_cast是否可能返回time_t的高32位?

有更好的方法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

我想也许这个问题与static_cast无关。 #ifdef平台混乱。如果有人明确知道答案,我仍然会感兴趣。