咚咚锵995 2022-01-14 17:26 采纳率: 50%
浏览 207
已结题

C语言++自增运算符优先级问题

文章目录

  • 前言
  • 一、题目:
  • 二、解决步骤
  • 1.初步分析
  • 2.上机运行验证
  • 3.逐步分析
  • 问题


前言

C运算符中,++自增运算符与其他运算符的优先级比较。
请看下面这一题。
求解决。
呃,这个提问里的ai助手一直提示:禁止重复输入同样的词汇或符号:+
代码无法上传源码,我只能上传图片了,望见谅。
我的博客主页的最新文章有关于这个问题的详细过程。


一、题目:

img

二、解决步骤

1.初步分析

这是C语言中一道考察运算符优先级的题目。初步分析如下:

img

所以结果应该是x=3,y=4

2.上机运行验证

使用Code::Blocks 20.03运行,

运行截图:

运行截图


结果出人意料,只有x=3对了。x=3,无需过多解释,不论顺序如何,x一定是自增了3次,所以一定的是等于3的。但是y=5是怎么得到的呢?

3.逐步分析

运行截图:

在这里插入图片描述

运行截图:

在这里插入图片描述

运行截图:

在这里插入图片描述

img

运行截图:

在这里插入图片描述


问题

经过这么一分析,呃,貌似属于白费力气,还是没有搞清楚原因。
望解决,本人已经思考了一下午了😭

  • 写回答

4条回答 默认 最新

  • _GX_ 2022-01-14 17:36
    关注

    C/C++语言标准没有规定运算符的操作数的计算顺序,编译器可以按任意顺序来计算操作数的值,因此如果一个变量在同一个运算符的两个操作数分别被修改或一个修改一个读取,其结果在不同的编译器上可能不一样的。以后不要写这种代码,讨论也没有意义。
    From https://en.cppreference.com/w/c/language/eval_order

    Order of evaluation of the operands of any C operator, including the order of evaluation of function arguments in a function-call expression, and the order of evaluation of the subexpressions within any expression is unspecified (except where noted below). The compiler will evaluate them in any order, and may choose another order when the same expression is evaluated again.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月14日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格