刚刷leetcode 104,遇到一个奇怪的问题,总结起来就是如下代码:
#include <stdio.h>
int main()
{
int m = 2;
int n = 10;
int x = 1 + (m > n) ? m :n;
printf("%d\n",x);
return 0;
}
int x = 1 + ((m > n) ? m :n);
这个写法和上面写法得到的结果不同,+运算符优先级高于 ?,这种现象怎么解释?
刚刷leetcode 104,遇到一个奇怪的问题,总结起来就是如下代码:
#include <stdio.h>
int main()
{
int m = 2;
int n = 10;
int x = 1 + (m > n) ? m :n;
printf("%d\n",x);
return 0;
}
int x = 1 + ((m > n) ? m :n);
这个写法和上面写法得到的结果不同,+运算符优先级高于 ?,这种现象怎么解释?
也算是优先级的问题吧,但是并不是 +? 的优先级,而是 + 和 ?: 的关系
三目运算符准确来说是一个完整的表达式,除非前面出现了等号,否则全部是按照同一个表达式的
比三目运算符低的只有 = 和 , 号了,毕竟一个代表取值,一个代表分割计算结果
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
+运算符优先级高于 ?,把三目条件写在一块就好,
int x = 1 + (m > n ? m :n);