C/C++大神看过来

造轮子 2020-03-05 10:40:02
最近项目中遇到这个问题,关于三目运算符的 int a = 30; int b = 40; C语言 (a > b ? a : b) = 80; //报错 C++ (a > b ? a : b) = 80; //正常运行 请问各位大神应该怎么解释呢?
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
造轮子 2020-03-06
  • 打赏
  • 举报
回复
大佬厉害,已经很清晰的讲解了该问题,多谢多谢
ggglivw 2020-03-06
  • 打赏
  • 举报
回复
2楼解释得相当到位,c11以后有右值引用,不过还是尽量少写这种和C的语法冲突的东西。我用右值得都是显示调用std::move,方便别个和自己看
windyNight99 2020-03-06
  • 打赏
  • 举报
回复
最好是多用if这类清楚的代码,符号太多会很混乱,尤其是代码长的时候,符号太多都不知道是什么意思 还有就是c和c++不要弄混
造轮子 2020-03-05
  • 打赏
  • 举报
回复
引用 1 楼 akari10032的回复:
一个是左值一个是右值,没什么好解释的啊。c跟cpp就是两种语言啊,不要混用
可以的,没毛病
akari10032 2020-03-05
  • 打赏
  • 举报
回复
一个是左值一个是右值,没什么好解释的啊。c跟cpp就是两种语言啊,不要混用
月凉西厢 2020-03-05
  • 打赏
  • 举报
回复
上面的解释太笼统了。实际上是C++对C的三木云算符作了增强。C语言的三目运算符返回的是变量的值,不能作左值使用。而C++返回的是变量本身,自然可以被修改。如果要兼容的话,用地址操作就可以了, 像这样*(a < b ? &a : &b )= 50

64,664

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧