【发布时间】:2014-02-25 14:52:07
【问题描述】:
我想知道返回值后是否可以更改变量?
有问题的函数是一个用于私有布尔标志变量的简单 get 函数。我希望读取这个标志是破坏性的,所以我想:
bool myGet (context_t * someContext) {
return (someContext->flag) ? (someContext->flag = false) : false;
}
推理(someContext->flag = false) 语句的评估结果将是true,但似乎不是。
也许它在条件(someContext->flag)? 之前进行了评估。
有没有其他方法可以实现预期的功能,而无需临时存储标志值、清除标志然后返回临时副本?谢谢。
【问题讨论】: