爱问知识人 爱问教育 医院库

t3-next=t1?t1:t2;c语言什么意思

首页

t3-next=t1?t1:t2;c语言什么意思

t1   t2    t3   都是链表指针

提交回答

全部答案

    2018-12-24 02:01:05
  • t3->next=t1?t1:t2;c语言:管理程序开启

    控***

    2018-12-24 02:01:05

  • 2018-12-24 01:56:22
  •   如题主所说,t1、t2、t3都是链表的指针,所以表达式“t3->next=t1?t1:t2;”的作用是为链表指针t3的next元素赋值。只不过,在赋值时使用“ ? : ”进行了判断。根据C语言运算符结核性的优先级,具体过程如下:
    ① 取得t3结构体的next元素:t3->next。
      
    ② 进行“ ? : ”条件运算:t1?t1:t2。也就是说,要判断( NULL != t1 )。如果( NULL != t1 ),则条件运算表达式结果取值t1;如果( NULL == t1 ),则表达式取值为t2。
    为什么要判断( NULL != t1 )?很简单啊,t1不是指针吗?如果t1为“真”,则取值不能等于0,对吧?而NULL是包含在stddef。
      h中的宏:
    #define NULL (void *)0
    所以,“t1?t1:t2”表达式中“?”之前的第一个表达式"t1"就成了(NULL != t1)。
    ③ 赋值符号“=”作用,将条件表达式的运算结果赋值给t3->next。
      
    刚刚查询了一下stddef。h,关于NULL的宏定义是:
    #define NULL ((void *)0)
    上面的描述中书写有误。

    永***

    2018-12-24 01:56:22

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 173-192
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):