C ++中的运算符优先级

Jafuweze

对于以下功能

int search(int n) {
    return arr[n] == n ? n : arr[n] = search(arr[n]);
}

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

int search(int n) {
    if (arr[n] == n) {
        return n;
    } else {
        return arr[n] = search(arr[n]);
    }
}

但是对于函数来说,返回一个赋值对我来说真的没有意义吗?还是我完全将其解释为错误?

罗曼

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

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

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

该SO答案涵盖了允许该标准的部分,并回答了类似的问题。


在使用该函数测试了一些不同的初始数组和参数之后,我应该警告您它可能引发StackOverflow异常!
例如:arr[2] = {1,0};search(1);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++运算符优先级和return语句

来自分类Dev

C / C ++编译器对运算符优先级/评估的严格程度如何?

来自分类Dev

C ++ std :: cout和<<运算符,优先级

来自分类Dev

C中的指针操作和运算符优先级

来自分类Dev

C中的移位运算符优先级

来自分类Dev

C#预处理程序指令中运算符的优先级是什么?

来自分类Dev

c中运算符的优先级

来自分类Dev

比较运算符重载与转换运算符的C ++优先级

来自分类Dev

C中运算符优先级的奇怪结果

来自分类Dev

有关C ++中运算符优先级的问题

来自分类Dev

C ++逗号运算符的优先级

来自分类Dev

C中的短路和运算符优先级

来自分类Dev

C ++:Stroustrup示例中的运算符优先级

来自分类Dev

C运算符中的优先级==和(=)

来自分类Dev

C ++与C#运算符优先级

来自分类Dev

c中运算符的优先级

来自分类Dev

C#中的运算符优先级和关联性

来自分类Dev

C中针对语句z = ++ x || ++ y && ++ z的运算符优先级

来自分类Dev

C ++流和运算符>>优先级

来自分类Dev

输出流中的C ++运算符优先级

来自分类Dev

C解释中的运算符优先级

来自分类Dev

C 中的优先级运算符

来自分类Dev

C ++中的递增/递减和输出流运算符优先级

来自分类Dev

C++ 后缀运算符优先级与布尔 AND

来自分类Dev

C中的运算符优先级?

来自分类Dev

C 运算符优先级,a++ && b++ 中的逻辑 vs 一元|| ++c

来自分类Dev

C++ 中涉及模数运算符优先级和大数字括号的错误

来自分类Dev

C ++中的增量和三元运算符优先级

来自分类Dev

C中'or'和'and'运算符的优先级