c - 编译时错误为“需要左值”,但不确定原因
问题描述
此代码引发左值所需的编译时错误。
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : m = k;
printf("%d", k);
}
解决方案
三元运算符的优先级高于赋值,这就是为什么您的代码等于(k < m ? k++ : m) = k;
. 您的编译器说括号中的值是不可分配的。
你想做的是:
#include <stdio.h>
void main()
{
int k = 8;
int m = 7;
k < m ? k++ : (m = k);
printf("%d", k);
}
推荐阅读
- jsch - 如何在 Jsch exec Channel 上设置读取超时
- sparql - 访问包含在父项的值中的项的属性
- grafana - 如何通过 REST API 更新 Grafana 面板中的指标值
- javascript - 如何在 daterangepicker 中禁用过去的日期?
- java - 如何使用 java SDK 生成 AWS 引导证书?
- php - 在 Debian 10 Buster 中安装 php-db 时出错
- python-3.x - 使用每列的唯一值作为每一级字典的键的多级嵌套字典
- javascript - 如何在我的 chrome 扩展程序中访问 chrome 通知 API?
- excel - 返回收件箱中项目的 mailitem 属性:错误 438 对象不支持此属性或方法
- microsoft-graph-api - 如何在 Microsoft Graph REST API 中识别已取消的事件?