面试官问:“如何交换两个变量而不用另外开辟空间。”(前提是在嵌入式系统中资源很宝贵).
答是使用位操作如下:
void swap(int a,int b)
{
a=a^b;
b=b^a;
a=a^b;
}
考官说如果a,b两个变量是占满32位,则位操作会出现溢出。
不知以下是不是正确方法。
void swap(int a,int b)
{
a=a+b;
b=a-b;
a=a-b;
}
答是使用位操作如下:
void swap(int a,int b)
{
a=a^b;
b=b^a;
a=a^b;
}
考官说如果a,b两个变量是占满32位,则位操作会出现溢出。
不知以下是不是正确方法。
void swap(int a,int b)
{
a=a+b;
b=a-b;
a=a-b;
}
博客围绕嵌入式面试中交换两个变量且不额外开辟空间的问题展开。先给出位操作交换变量的方法,但考官指出在a、b占满32位时会溢出,随后又提出用加减法交换变量的方法,并对其正确性存疑。

2153

被折叠的 条评论
为什么被折叠?



