麦浪佛罗 2023-12-22 12:33 采纳率: 90.5%
浏览 9
已结题

运算符,c语言,优先级,运算


#include<stdio.h>
int main()
{
    int a=5,b;
    b=++a*++a;
    printf("%d\n",b);//49
    a=5;
    b=++a*--a;
    printf("%d\n",b);//25
    a=5;
    b=++a*a--;
    printf("%d\n",b);//30
    a=5;
    b=a++*a;
    printf("%d\n",b);//30
    a=5;
    b=a++*a;
    printf("%d\n",b);//30
    a=5;
    b=a*a++;
    printf("%d\n",b);30
    a=5;
    b=++a*a;
    printf("%d\n",b);//36
    return 0;
}

为啥b=++aa--等于30而不是36,a--不是优先级很低不管嘛那就是66嘛为啥给我的感觉是65=30,如果a--进行了运算为啥不是55=25,和b=++a*--a一样为啥a--直接可以为5 不影响前面那个6.
类似的++a*a=36;为啥a++*a为啥等于30;

  • 写回答

3条回答 默认 最新

  • K_n_i_g_h_t_1990 2023-12-22 14:03
    关注

    自增和自减运算符有两种形式:前缀形式和后缀形式。前缀形式是指运算符放在变量的前面,如++a或--a;后缀形式是指运算符放在变量的后面,如a++或a--。这两种形式的区别是:

    • 前缀形式会先改变变量的值,然后再参与其他运算。例如,++a表示先让a的值加1,然后再用新的a的值进行运算。
    • 后缀形式会先用变量的原值参与其他运算,然后再改变变量的值。例如,a++表示先用a的原值进行运算,然后再让a的值加1。

    自增和自减运算符的结合性是从右到左的,也就是说,当有多个自增和自减运算符同时出现时,会先从右边开始计算。

    首先,你要明白这些概念,然后,我有一点希望你明白,既然你那么肯定自己的想法,为什么不动手输入,输出看一下呢?也许你本来就是正确的呢!

    img

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 github录制项目
  • ¥15 H.264选择性加密例程
  • ¥50 windows的SFTP服务器如何能批量同步用户信息?
  • ¥15 centos7.9升级python3.0的问题
  • ¥15 如何解决调试dev-出++5.11不成功问题
  • ¥15 安装CentOS6时卡住
  • ¥20 关于#监控系统#的问题,如何解决?(相关搜索:系统软件)
  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。