C语言中的三元条件算子

C语言中的三元条件算子,c,turbo-c,C,Turbo C,(k

(k

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

输入

k < m ? k++ : m = k;
更好地利用

if (k < m) {
    k++;
} else {
    m = k;
}
if(k
相反

您可以在此处查看C优先级表,例如:

术语“左值”和“右值”主要是指“作业左边可以写的东西”和“作业右边只能写的东西”。“到岸价”


一个更容易理解
语义的示例:
:对于
uint8\t k
,什么是
条件?k:k+1
平均值

  • 前面的部分
    k
    是一个左值,类型为
    uint8\u t

  • 不过,后一个表达式
    k+1
    有点棘手。作为算术表达式的结果,它是一个右值。而且它不是一个
    uint_8
    ,而是一个

  • uint8\u t
    int
    的常见类型是
    int
    。那么在总体
    条件下?k:k+1
    是一个类型为
    int
    的右值表达式

输入

k < m ? k++ : m = k;
更好地利用

if (k < m) {
    k++;
} else {
    m = k;
}
if(k
相反

您可以在此处查看C优先级表,例如:

术语“左值”和“右值”主要是指“作业左边可以写的东西”和“作业右边只能写的东西”。“到岸价”


一个更容易理解
语义的示例:
:对于
uint8\t k
,什么是
条件?k:k+1
平均值

  • 前面的部分
    k
    是一个左值,类型为
    uint8\u t

  • 不过,后一个表达式
    k+1
    有点棘手。作为算术表达式的结果,它是一个右值。而且它不是一个
    uint_8
    ,而是一个

  • uint8\u t
    int
    的常见类型是
    int
    。那么在总体
    条件下?k:k+1
    是一个类型为
    int
    的右值表达式


代码对我来说编译得很好(使用g++-Wall temp.cpp)。它是有效的C++。请参阅我的答案,包括这个表达式的完整行以及涉及到的所有变量的相关声明。代码为我编译(使用g++WalthTime.CPP)。它是有效的C++。请参阅我的答案,包括这个表达式的完整行以及涉及到的所有变量的相关声明。非常感谢。我可以了解更多关于优先级和LValy的链接,rValk,这样我就不会犯这样的错误了。例如,有一个操作符优先的列表。“左值”和“右值”主要是指“作业左边可以写的东西”和“作业右边只能写的东西”。C.f.非常感谢。有什么链接可以让我进一步了解优先级和左值,右值,这样我就不会犯这样的错误吗?例如,有一个运算符优先级列表。“左值”和“右值”主要是指“作业左边可以写的东西”和“作业右边只能写的东西”。到岸价。