具有不同类型作为参数的 C++ 条件运算符

标签 c++ pointers conditional-operator

我正在尝试对 int 和 *node(节点是自定义结构)使用条件运算符 (?)。这是我的代码,以及由此产生的错误。

节点:

struct node {
  int num;
  node *next;
};

条件执行:

void PrintNodes(node *head_p) {
  int done = 0;
  while (!done) {
    PrintNodeData(head_p);
    // if (head_p->next==NULL) {
    //   done++;
    // } else {
    //   head_p++;
    // }
    ((head_p->next==NULL) ? done : head_p)++;
  }
}

我在条件语句上方的注释中有等效的 if...then...else 语句,我只是希望能够将其缩减为一行。

编辑

错误:

test.cc: In function ‘void PrintNodes(node*)’:
test.cc:28:36: error: operands to ?: have different types ‘int’ and ‘node*’
make: *** [all] Error 1

最佳答案

只是不要。做明确的事情。

长答案是 C++ 有一个类型系统,而你试图做的事情违反了它。

关于具有不同类型作为参数的 C++ 条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715152/

相关文章:

conditional-operator - 三元比较输出新值

reactjs - 基于 Typescript 的 Reactjs 中的三元运算符无法按我的预期工作

c++ - 我如何在C++中输入和输出各种文件类型

c++ - 如何将文本文件读入类的 vector

c++ - 从 main 中的双指针函数打印出指针数组

c - 初学者C分配

python - python中单行lambda函数中的条件语句?

c++ - 将 C++ 添加到复杂的 C 生成文件

c++ - 尝试打印 vector 的内容

c - 从指针生成整数,从整数生成指针,不进行强制转换