相关疑难解决方法(0)

C中的三元(条件)运算符

条件运算符需要什么?在功能上它是多余的,因为它实现了if-else结构.如果条件运算符比等效的if-else赋值更有效,为什么编译器不能更有效地解释if-else?

c operators ternary-operator conditional-operator

53
推荐指数
9
解决办法
10万
查看次数

错误:这个简单的C代码需要左值?(三元有任务吗?)

我有 :

#include<stdio.h>

int main()
{
 int a=5,b=6;
 (a>b)?b=a:b=b;    // Here is the error
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

但如果我更换:

(a>b)?b=a:b=b;       // Error
with   
(a>b)?(b=a):(b=b);   // No-Error
Run Code Online (Sandbox Code Playgroud)

我理解这lvalue是一个可以分配某些东西的价值,它与它有什么不同rvalue,但为什么会extra parenthesis产生不同.

c ternary-operator conditional-operator

11
推荐指数
2
解决办法
9156
查看次数

C与C++中的三元运算符

C和C++之间存在很多差异,并且卡在其中一个上相同的代码在C中产生错误而在C++中执行正常请解释原因

int main(void)
{
   int a=10,b;
   a>=5?b=100:b=200;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在C中给出了一个错误,说明了所需的左值,而相同的代码在C++中编译得很好

c c++ ternary-operator conditional-operator

9
推荐指数
3
解决办法
903
查看次数

C中的三元条件运算符

(k < m ? k++ : m = k)

此特定表达式给出了编译时错误,表示需要左值.问题在于k++.无法理解此表达式中的错误.

c turbo-c

1
推荐指数
1
解决办法
386
查看次数

“需要左值作为赋值的左操作数”错误 - 三元运算符

在编译下面的代码时,我收到错误“需要左值作为赋值的左操作数”

for (i = 1; i < 2 n; i++) {
    for (((i<= n)?j=1:j=n-i);j<=i&&j>0;((i<=n)?j++:j--)) {
        printf("*");
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

实际上我试图仅使用两个 for 循环来打印下面的图案

*
**
***
****
*****
****
***
**
*
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

pra.c:5:20: error: lvalue required as left operand of assignment for(((i<=5)?j=1:j=i);j<=i&&j>0;((i<=5)?j++:j--)){ ^
有人可以帮助我吗?

c

1
推荐指数
1
解决办法
2299
查看次数