如何在目标c中交换两个变量的值而没有第三个变量

时间:2011-03-10 03:00:16

标签: iphone objective-c

嘿伙计们,我想要你的建议是如何在没有第三个变量的情况下改变两个变量的值。目标cc。 有没有办法通知我,

5 个答案:

答案 0 :(得分:12)

它可以用任何语言完成。 x和y是2个变量,我们想要交换它们

{
  //lets say x , y are 1 ,2
  x = x + y; // 1+2 =3
  y = x - y; // 3 -2 = 1
  x = x -y; // 3-1 = 2;
}

您可以使用任何语言的这些等式来实现此目的

答案 1 :(得分:7)

你的意思是交换两个变量的值,如XOR swap algorithm?除非你试图回答一个毫无意义的面试问题,用汇编语言编程,或在IOCCC中竞争,否则不要打扰。一个好的优化编译器可能会比你提出的任何技巧更好地处理标准tmp = a; a = b; b = tmp;

如果你正在做其中一件事(或只是好奇),请参阅the Wikipedia article了解更多信息。

答案 2 :(得分:1)

就数字而言,你可以用任何语言交换数字而不使用第三种数字,无论是java,objective-C OR C / C ++,

了解更多信息

Potential Problem in "Swapping values of two variables without using a third variable"

答案 3 :(得分:1)

由于这是明确的iPhone,你可以使用ARM指令SWP,但这几乎是你想要的不可思议的。编译器在这种优化方面要好得多。如果您只想避免代码中的临时变量,请编写内联函数来处理它。如果可以更有效地完成,编译器将对其进行优化。

答案 4 :(得分:0)

NSString * first = @" bharath&#34 ;;     NSString * second = @" raj&#34 ;;

first = [NSString stringWithFormat:@"%@%@",first,second];

NSRange needleRange = NSMakeRange(0,
                                  first.length - second.length);

second = [first substringWithRange:needleRange];

first = [first substringFromIndex:second.length];
NSLog(@"first---> %@, Second---> %@",first,second);