我传递给一个函数的整数变量(其初始值我不知道),该变量通过“一个”来递增/修改变量。或者'零'在某些条件下。在函数调用之后是否可以检查变量是否被修改过天气?。
IDE:MSVC 2012
答案 0 :(得分:3)
简单
void modify(int& var) {
if (certainConditions) {
var++;
}
}
int oldValue = myValue;
modify(myValue);
if (oldValue != myValue) {
//modified
}
或者@juanchopanza建议如果修改了值,则返回bool,然后你不必传递引用
bool modify(int var) {
if (certainConditions) {
var++;
return true;
}
return false;
}
if (modify(myValue)) {
//modified
}
答案 1 :(得分:0)
使用另一个变量怎么样? 这个操作可能还有一点额外的内存
伪代码:
int oldvalue = yourUnknownVariable;
func(yourUnknownVariable);
if(yourUnknownVariable==oldvalue)
{
// not modified
}
答案 2 :(得分:0)
显而易见的方法是使用bool
返回值:
bool modifyvar(int& var)
{
bool ret = false;
if(condition)
{
var++;
ret = true;
}
return ret;
}
如果您已经返回了某些内容,则可以返回tuple<T, bool>
,修改全局变量(不推荐,但C库通常如何处理此类问题),将引用传递给布尔值为如果您需要返回相当多的不同内容,请参数或返回包含所有相关值的struct
或class
。
答案 3 :(得分:0)
//Assign the value of the variable into another one *before* invocation.
int oldValue = varValue;
//your function invocation happens here.
//NOTE: you are probably passing a reference of the integer to it.
invokeMyFunction(varValue);
//Compare the old with the current value of the variable
if(oldValue != varValue)
{
//Code executed if value modified here.
}
答案 4 :(得分:0)
int value = 1; cin&gt;&gt;“您的变量已被修改”;
或者
int value = 1; //做一些变量值,可能值= 2; 或者你需要做什么。
如果(值!= 1) cout&gt;&gt;“我的价值被修改了”; 其他 cout&gt;&gt;“我的价值未被修改”;