c++代码 把宽和高数据对调一下,为什么这样写数据 不做对调? int outWidth = out.w; int outHeight = out.h; out.w = outW

c++代码 把宽和高数据对调一下,为什么这样写数据 不做对调?    int outWidth = out.w;
    int outHeight = out.h;
    out.w = outWidth;
    out.h = outHeight;

在C++代码中,当你需要交换两个变量的值时,通常有几种方法可以实现。你提供的代码片段:

```cpp
int outWidth = out.w;
int outHeight = out.h;
out.w = outWidth;
out.h = outHeight;
```

这段代码的作用是获取 `out` 对象的宽度和高度,然后将它们存储在 `outWidth` 和 `outHeight` 变量中。接着,将 `outWidth` 赋值给 `out.w`,将 `outHeight` 赋值给 `out.h`。这实际上并没有交换 `out.w` 和 `out.h` 的值,而是将它们重新赋值回自身。

如果你想交换 `out.w` 和 `out.h` 的值,你应该这样写:

### 方法1:使用临时变量
```cpp
int temp = out.w;
out.w = out.h;
out.h = temp;
```

### 方法2:使用C++11的std::swap
```cpp
std::swap(out.w, out.h);
```

### 方法3:使用加法和减法(不推荐,仅作为示例)
```cpp
out.w = out.w + out.h;
out.h = out.w - out.h;
out.w = out.w - out.h;
```

### 方法4:使用位运算(不推荐,仅作为示例)
```cpp
out.w ^= out.h;
out.h ^= out.w;
out.w ^= out.h;
```

### 为什么原始代码不交换数据?

原始代码的问题在于它没有正确地交换两个变量的值。它首先将 `out.w` 的值赋给 `outWidth`,将 `out.h` 的值赋给 `outHeight`,然后又将 `outWidth` 赋给 `out.w`,将 `outHeight` 赋给 `out.h`。这实际上只是将原始值重新赋值回变量,没有实现交换。

### 正确的交换操作

要正确交换两个变量的值,你应该使用上述方法中的任意一种。这样可以确保 `out.w` 和 `out.h` 的值被正确地交换,而不是简单地重新赋值。

### 总结

在编写代码时,确保理解每个操作的意图和结果。在这种情况下,原始代码的意图是交换两个变量的值,但由于实现方式不正确,没有达到预期的效果。使用上述任何一种方法都可以实现正确的交换操作。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值