为什么我+++工作正常,但+++我给出错误?

 peteryan 发布于 2023-01-01 14:50

我已经尝试了一些C语言代码,但我遇到了这个问题.

int i=0;
i=i+++ ++i;   //works fine
//i=i++ +++i;   gives error

我的困惑是如何i+++运行?但是+++i返回错误.

1 个回答
  • 根据"最长匹配"规则解析C运算符.您的第一个示例被解析为:

    i = i ++ + ++ i ;
    
    i = (i++) + (++i);
    

    而您的第二个示例被解析为:

    i = i ++ ++ + i ;
    
    i = ((i++)++) + i;
    

    后增量运算符的结果是rvalue,它是增量变量的先前值的副本.将另一个后增量运算符应用于右值是一个错误,因为该运算符需要一个左值,直观地表示诸如i*p可以赋值的表达式.

    此外,此代码包含未定义的行为.您正在阅读i和中间没有修改它序列点 - ,;,&&,||,,?:哪位意味着程序的行为是不可预测的,将整个编译器有所不同.

    2023-01-01 14:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有