我在看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位?
有更好的方法吗?
谢谢,
答案 0 :(得分:0)
我想也许这个问题与static_cast无关。 #ifdef平台混乱。如果有人明确知道答案,我仍然会感兴趣。