面试官问:“如何交换两个变量而不用另外开辟空间。”(前提是在嵌入式系统中资源很宝贵).
答是使用位操作如下:
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;
}