Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的运算符优先级+;_C++ - Fatal编程技术网

C++ C+中的运算符优先级+;

C++ C+中的运算符优先级+;,c++,C++,对于以下函数 不太清楚它到底应该做什么。根据我对运算符优先级的理解,我的猜测是上面的等价于 int搜索(int n){ 如果(arr[n]==n){ 返回n; }否则{ 返回arr[n]=搜索(arr[n]); } } 但是函数返回赋值对我来说真的没有意义吗?还是我的解释完全错了?你对表达式的扩展在我看来是正确的 我认为您缺少的是赋值表达式可以作为值进行计算。返回的值是赋值后左操作数的值 因此arr[n]=search(arr[n])在分配了search(arr[n])的返回值后,有效地返回a

对于以下函数

不太清楚它到底应该做什么。根据我对运算符优先级的理解,我的猜测是上面的等价于

int搜索(int n){
如果(arr[n]==n){
返回n;
}否则{
返回arr[n]=搜索(arr[n]);
}
}

但是函数返回赋值对我来说真的没有意义吗?还是我的解释完全错了?

你对表达式的扩展在我看来是正确的

我认为您缺少的是赋值表达式可以作为值进行计算。返回的值是赋值后左操作数的值

因此
arr[n]=search(arr[n])
在分配了
search(arr[n])的返回值后,有效地返回
arr[n]

涵盖了标准中允许这一点的部分,并回答了类似的问题


在使用该函数测试了一些不同的初始数组和参数之后,我应该警告您,它可能引发StackOverflow异常

例如:
arr[2]={1,0}
搜索(1)

我的解释不正确。我删除了我的答案。实际上,
arr
是通过
for(inti=1;我可以在代码的下面看到
arr[search(a)]=search(b)
创建的,所以我现在不太确定。。。
int search(int n) {
    return arr[n] == n ? n : arr[n] = search(arr[n]);
}