C中三元运算符的优先级

优先级很低,往往需要加一个括号

在求二叉树的高度遇到的问题,属于对C不熟悉导致的bug

  // ret的值为20,ret1的值是22
  int a = 10, b = 20;
  int ret = 2 + a>b?a:b;      // 先计算2+a, 2+a>b为假,因此ret的值是20
  int ret1 = 2 + (a>b?a:b);   // 先计算(a>b?a:b),然后再计算2 + (a>b?a:b),因此ret1的值是22
  // 最稳妥的写法
  int ret2 = 2 + ((a>b) ? (a) : (b));
posted @ 2023-09-29 17:44  Guanjie255  阅读(29)  评论(0编辑  收藏  举报