我有一个简单的测试:
def swap(a, b)
c = a
a = b
b = c
end
a = 3
b = 4
swap(a, b)
print a # 3. not change value
我知道这个例子不适用于某些语言,如Java或C#,因为这些变量是原语。但是在Ruby中,如果所有的东西都是对象,我认为上面的例子应该能用。请给我解释一下。
我认为问题在于FixNum是不可变的。我有概念代码的证明,使用Java生成一个不可更改的整数类:
static class CustomInteger {
Integer value;
p
我是个C新手,还在努力掌握指针的概念。我知道如何写一个有效的交换函数……我更关心的是为什么这个函数不起作用。
void swap(int* a, int* b)
{
int* temp = a;
a = b;
b = temp;
}
int main()
{
int x = 5, y = 10;
int *a = &x, *b = &y;
swap(a, b);
printf(“%d %d\n”), *a, *b);
}
出于移动构造的目的而移动的对象处于只能销毁的状态,这是合法/适当的c++0x吗?例如:
class move_constructible {...};
int main()
{
move_constructible x;
move_constructible y(std::move(x));
// From now on, x can only be destroyed. Any other method will result
// in a fatal error.
}
为了记录起见,我试图将一个带有指针成员的c结构包装在一个c++类中,这个指针成员应该总
我想写一个LMC程序,有效地找出3种不同输入的两倍中间值和最小值之间的差异。我想要一些帮助,为这方面的一个算法。
以下是我到目前为止所拥有的:
INPUT 901 - Input first
STO 399 - Store in 99 (a)
INPUT 901 - Input second
STO 398 - Store in 98 (b)
INPUT 901 - Input third
STO 397 - Store in 97 (c)
LOAD 597 - Load 97 (a)
SUB 298 - Subtract 97 - 98 (a - b)
BRP 8xx
假设语言支持这些求值策略,那么按引用调用、按名称调用和按值调用的结果会是什么?
void swap(int a; int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int i = 3;
int A[5];
A[3] = 4;
swap (i, A[3]);
是否有可能在ActionScript 3.0中实现类似于C++ std::swap的交换例程?我的意思是像这样
public static function Swap(var a, var b):void
{
var c = a;
a = b;
b = c;
}
然后
var a:int = 3;
var b:int = 5;
Swap(a,b);
trace(a, " ", b); // there must be 5 3
它不能“按原样”处理整数,因为它们是通过值传递的,
我正在学习C++,发现了一些我想要理解的奇怪的东西(参见代码第5行的注释):
#include <iostream>
using namespace std;
// WITH this forward decleration the output is A=1 and B=2
// WITHOUT this forward decleration the output is A=2 and B=1
// WHY??
void swap(int a, int b);
int main() {
int a = 1;
int b = 2;
swap(a,
我们在很多地方都有这样的代码,如果一个值比另一个值高,我们就交换整数。有没有办法对这段代码进行重构,让它可以被重用?
int numerator2 = <some random number>;
int denominator2 = <some random number>;
if (numerator2 > denominator2) {
int temp = denominator2;
denominator2 = numerator2;
numerator2 = temp;
}
我正在做一个在线代码挑战。我有一个数组,我需要对数组进行排序,并将其记录到排序所需的最小迭代次数。我有下面的代码。
def minSwap(ar):
c = 0
for i in range(0, len(ar)):
if ar[i] == i+1:
continue
else:
for k in range(i+1, len(ar)):
if ar[k] == i+1:
ar[k] = ar[i]
我正在研究指针,我遇到了这个程序:
#include <stdio.h>
void swap(int *,int *);
int main()
{
int a=10;
int b=20;
swap(&a,&b);
printf("the value is %d and %d",a,b);
return 0;
}
void swap(int *a,int*b)
{
int t;
t=*a;
*a=*b;
*b=t;
printf("%d and%d\n"