转换为unsigned int,然后转换回来,C

时间:2011-12-02 16:09:33

标签: c stack int unsigned

如果我有一个堆栈S,填充了有符号的整数,我想执行以下操作: POP两个值并将其转换为unsigned int,然后将它们一起添加,然后推回SIGNED总和。 我做了以下,但我不知道它是否正确:

unsigned int x = (unsigned int)pop(S)
unsigned int y = (unsigned int)pop(S)
int sum = x+y
push(S, sum);
pc++

我是否在正确的轨道上? 另外,有人可以向我解释一下有关明确的演员吗? 谢谢。

1 个答案:

答案 0 :(得分:2)

你的代码正是你所说的应该做的,这是正确的。真正的问题是,这是否是你想要实现的目标。

转换为unsigned int的负数变为非常大的正数。例如,负数变为最大的正整数,可以在转换为无符号后用无符号整数表示(试一试!)当你添加两个被转换为无符号的负数时,你可以保证溢出。如果这确实是你想要做的,你的代码肯定是这样做的。