gpt4 book ai didi

c++ - 更改变量值时,使用 int x = 100 有什么区别;对 x = x + 100;

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:19 25 4
gpt4 key购买 nike

大多数时候当改变一个变量的值时,我会使用(例如)int x = 100;,但是当运行程序时它并没有达到预期的效果,如果我使用 x = x + 100; 然后就可以了

我在 if 语句中使用它,之前重新分配变量值的方法没有达到预期效果。

void Game::ComposeFrame(){
int y = 200;
int x = 400;
int g = 0;


if (wnd.kbd.KeyIsPressed(VK_DOWN)) {

y = y + 150;

}
if (wnd.kbd.KeyIsPressed(VK_UP)) {

y = y - 150;

}
if (wnd.kbd.KeyIsPressed(VK_RIGHT)) {

x = x + 150;

}
if (wnd.kbd.KeyIsPressed(VK_LEFT)) {

x = x - 150;

}
if (wnd.kbd.KeyIsPressed(VK_SHIFT)) {

g = g + 100;

}

gfx.PutPixel(x + 1, y + 100, 100, g, g);
gfx.PutPixel(x + 2, y + 100, 100, g, g);
gfx.PutPixel(x + 3, y + 100, 100, g, g);
gfx.PutPixel(x + 4, y + 100, 100, g, g);
gfx.PutPixel(x + 5, y + 100, 100, g, g);
gfx.PutPixel(x + 1, y + 105, 100, g, g);
gfx.PutPixel(x + 2, y + 105, 100, g, g);
gfx.PutPixel(x + 3, y + 105, 100, g, g);
gfx.PutPixel(x + 4, y + 105, 100, g, g);
gfx.PutPixel(x + 5, y + 105, 100, g, g);

这个程序的预期目的是,当运行时,它应该在屏幕上放置像素,并且当按下某些按钮时它应该移动这些像素。当使用 int x = 100; 时,像素的位置不会改变,但当使用 x = x + 100;

时,它会按预期工作

最佳答案

我觉得有必要扩展其他答案...

int x = 100; 创建一个名为 x 的新变量,它“隐藏”(或隐藏)任何先前名为 x 的变量> 在封闭范围内。这意味着 x 的原始值未被修改(例如,当新的 x 的作用域结束时)。

如果您想将 x 的当前值增加 100,您应该使用 x = x + 100;(或等同于 x += 100;)。

现在对于其他人还没有提到的部分:

Most of the time when changing the value of a variable I will use (for example) int x = 100;

这意味着您经常(几乎总是)使用这种不正确的阴影变量模式。因为具有多个具有相同 名称的不同 变量会造成混淆,即使正确使用它们也很容易导致意外行为。因此,您应该永远不要隐藏变量。如果您需要此行为,请使其名称略有不同(例如 x_x 等)。

为了在将来帮助您,您可以使用 -Wshadow 编译器标志在编译时针对所有此类事件发出警告(假设您使用的是 gcc、clang 或它们的任何分支).

关于c++ - 更改变量值时,使用 int x = 100 有什么区别;对 x = x + 100;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57104104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com