gpt4 book ai didi

c - Eclipse-Photon 三元运算符编译错误

转载 作者:行者123 更新时间:2023-11-30 19:04:37 26 4
gpt4 key购买 nike

该函数应该比较两个整数并在屏幕上打印关系尽管如此,三元运算符在语法上是正确的,并且已经在 Visual Studio IDE 上运行,当使用 gcc 编译时,它在 Eclipse 中给出了错误:

error: lvalue required as left operand of assignment
(x == y) ? c = 61 : (x > y) ? c = 62 : c = 60;
^

代码:

#include <stdio.h>

void _1_6(const int x, const int y)
{
char c = '\0';
(x == y) ? c = 61 : (x > y) ? c = 62 : c = 60;
printf("%d%c%d", x, c, y);
}

int main(void)
{
_1_6(1, 3);
}

最佳答案

至于为什么你会收到错误,这是关于operator precedence的问题.

表达式实际上是((x == y) ? c = 61 : (x > y) ? c = 62 : c) = 60。也就是说,您尝试将值 60 分配给表达式 (x == y) ? c = 61 : (x > y) ? c = 62 : c 这是不可能的。

您需要自己添加一些括号,例如

(x == y) ? c = 61 : (x > y) ? c = 62 : (c = 60);  // Note parentheses around last assignment

或者将其修改为例如

c = (x == y ? '=' : x > y ? '>' : '<');

或者,这就是我的建议,停止使用混淆的代码并使用简单、可读的代码:

if (x == y)
c = '=';
else if (x > y)
c = '>';
else
c = '<';

另请注意使用实际字符值,而不是 magic numbers .

关于c - Eclipse-Photon 三元运算符编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com