【问题标题】:C++ Why wont this function toggle this interger value? [duplicate]C++ 为什么这个函数不切换这个整数值? [复制]
【发布时间】:2014-09-18 02:10:05
【问题描述】:
int Test = 11;


void Toggle(const char* Name, int Offset, int Value){
     Offset ^= Value;
     printf("%s\n [%s^7]", Name, Offset ? "^2ON" : "^1OFF");
}

主要...

void main(){
    Toggle("Unlimited Ammo", Test, 100);
    Toggle("Unlimited Ammo", Test, 100);
}

我很确定 XOR 应该会切换它。我不知道为什么它不适合我。

【问题讨论】:

  • 传值传参表示只修改本地副本。
  • 你认为“切换”是什么意思?
  • 投反对票并以“离题”结束投票?严重地?你们有些人是混蛋。真的很难相信初学者会在参数传递语义方面遇到困难吗?至少摆脱你的懒惰并作为副本关闭。
  • 您能解释一下 Toggle(...) 应该做什么,以便我们更好地帮助您吗?
  • @EdS 投票计数旨在反映问题对本网站内容库的有用程度。这个问题没有用。将鼠标悬停在 upvote 和 downvote 按钮上,查看它们的用途说明。

标签: c++ xor


【解决方案1】:

默认情况下,C++ 是按值传递的,这意味着函数获取Test本地副本。对它的更改不会反映给调用者。

如果你想通过引用传递,你必须使用......等待它...... 引用 :-)

您可以使用以下函数签名:

void Toggle(const char* Name, int &Offset, int Value) ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多