首页 > 其他分享 >C语言 运算符优先级与结合性

C语言 运算符优先级与结合性

时间:2023-01-04 14:23:17浏览次数:42  
标签:优先级 returnSize ++ C语言 运算符 ans root

如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律(associativity)决定它们的组合方式是从左到右或是从右到左


C语言运算符优先级及结合性如下图所示

image-20230104135551877


犯过的错误

*p++ 等价于 *(p++)

具体错误代码如下

void preOrder(struct TreeNode *root, int *ans, int *returnSize){
    if(root == NULL){
        return ;
    }
    ans[*returnSize] = root->val;
    *returnSize++;		//error
    preOrder(root->left, ans, returnSize);
    preOrder(root->right, ans, returnSize);
}

此为二叉树先序遍,当将root->val放到遍历数组中之后,需要将returnSize的值增1,于是就有了错误的操作

*returnSize++;

此操作等价于*(returnSize++),把指向数组大小的指针后移了1位,使returnSize指向了未知的内存空间

正解:

(*returnSize)++;

才是将returnSize指向的数组大小变量增1

注意

*returnSize++ 等价于 *(returnSize++)

这里并不是自增运算符(++)的优先级要高于间接引用运算符( * ) 一元运算符的优先级是相同的,即++和*的优先级是相同的。

正确的理解是,一元运算符的结合性是从右到左,因此returnSize先于++结合,即(returnSize++),再结合间接引用运算符*,等价于 *(returnSize++),试图访问returnSize所指空间之后的未知空间。

标签:优先级,returnSize,++,C语言,运算符,ans,root
From: https://www.cnblogs.com/dctwan/p/17024703.html

相关文章

  • C语言程序设计基础课程设计要求[广东东软学院]
    C语言程序设计基础课程设计要求[广东东软学院]广东东软学院程序设计基础课程设计要求层次:本科适用专业:2021级计算机类专业广东东软学院《程序设计基础课程设计》......
  • C语言-保留小数位,不需要四舍五入
     1需要输出为截取后2位小数的转换方法#include<stdio.h>intmain(){floatn=23.478;inta,b;a=(int)n;b=(int)((n-a)*100);......
  • C语言简易计算器的两种方法
    第一种方法  函数指针数组#include<stdio.h>intadd(intx,inty){returnx+y;}intsub(intx,inty){returnx-y;}intmul(intx,inty){returnx*y;}intd......
  • Spring Boot 配置优先级顺序
    一般在一个项目中,总是会有好多个环境。比如:开发环境->测试环境->预发布环境【验证环境】->生产环境每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境......
  • C语言学习第三天(while循环)
    1、while语句while(表达式)      循环语句:例题:打印1-10:#include<stdio.h>intmain(){inti=1;while(i<=10){printf("%d\n",i);i++;}retu......
  • es6 解构赋值 扩展运算符 字符串模板 等
    解构赋值<template><div><h1>解构赋值</h1></div></template><script>exportdefault{name:"demo4",mounted(){//以前......
  • C语言贪吃蛇大作战
    C语言贪吃蛇大作战贪吃蛇大作战1997年,诺基亚公司发布了贪吃蛇游戏,并将其内置于诺基亚6110手机中,使这款游戏迅速风靡全球,成为一代经典。一般的观点认为,贪吃蛇是手机游......
  • 运算符和表达式
    一、运算符1.含义C语言中,数据是程序处理的对象,运算是对数据进行加工的过程,体现数据之间的各种不同运算关系的符号就称为运算符。C语言中,除了控制语句和输入输出以外的几乎......
  • 1003C语言提高专题篇
    1.指针入门到精通指针是什么如果在程序中定义了一个变量,在对程序进行编译时,系统就会给该变量分配内存单元,编译系统根据程序中定义的变量类型,分配一定长度的空间。内......
  • C语言论坛系统[2023-01-03]
    C语言论坛系统[2023-01-03]论坛系统设计课程说明需要提交的内容包括两个部分。第一部分,对代码功能的讲解。课设要求最后每个同学录制一个讲解视频,对着自己代码的功能......