【发布时间】:2013-05-23 13:25:19
【问题描述】:
我正在尝试在 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)++;
}
}
我在条件语句上方的 cmets 中有等效的 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
【问题讨论】:
-
而产生的错误是...?
-
为什么你想把它剪成一行?
-
这很丑,想想更好的办法
-
因为我喜欢小而简单的功能,而且我认为它不会让它太难以阅读。
-
@JShoe 你错了。
标签: c++ pointers conditional-operator