c语言运算优先级与结合方向的问题
c语言运算的结合方向一直困扰我,不过我终于get到了哈哈
先附上c语言运算优先级和结合方向图片


以上有c语言一共的15个优先级,从上往下递增
c语言的运算符号有很多,当我们打代码或者看代码的时候符号多了真的会搞错,但是当我们仔细研究c运算符时,就会发现还是有规律可寻的呢
综合上表我做一个概述
第一步:建议首先确定好成员(比如结构体数组中stu[i].sum即“结构体数组名[i].成员类型(type)”),再看有无括号,有括号先把括号里面的确定算好
第二步:然后我们要注意单目运算符,单目运算符就是这种运算符只针对一个变量,i++, - (负号), * (指针), & (取址)等,先把单个变量自己的运算算好
再去想和其他变量的运算啦,所有单目运算符的变量计算我们都要从右到左。例如*p++==*(p++)
第三步:看双目运算符, 再就是两个变量的运算了,双目运算符从左到右,但是不同的双目运算符优先级不同,所以在看双目运算符中要注意计算的
先后,这个需要我们记的,记住优先级,还有是从左看到右的。
在这里想个人解读一下&,| 双目运算符
按位与 & ,按位 | 我们并不常用,但是不能和逻辑与 &&,逻辑或 || 弄混啦
& 和 | 在保留和清零某些变量的时候会用到,
按位 & 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码) & 00000101 (5的二进制补码)== 00000001 (1的二进制补码),可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
按位 | 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下: 00001001|00000101
00001101 (十进制为13)可见9|5=13
按位异或 ^ 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
例如9^5可写成算式如下: 00001001^00000101 == 00001100 (十进制为12)
第四步:在运算完成了之后就 进入赋值环节啦,赋值运算符是从右到左赋值的。例如:a=b+d+c是先算右边的(b+d+c) 再赋值给a
基本四步可以完成了,但是如果用逗号运算符的话,需要说明一下 最后一级逗号运算符
举例说明
b=2,c=7,d=5 ;
a1=(++b,c--,d+3);
在先计算括号里面的,根据逗号逐个赋值,所以a1最后会等于8。
a2=++b,c--,d+3;
根据优先级可知,先赋值再看逗号,a2=3。
欢迎大家指正哦*^⊙o⊙^*
c语言运算优先级与结合方向的问题的更多相关文章
- C语言 运算符优先级和结合方向
运算符优先级和结合方向 初级运算符( ).[ ].->.. 高于 单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于 逻辑运算符(不包括!) 高于 条件运算 ...
- c语言运算符号的优先级
c语言运算符号的优先级 本文来自百度搜索只为查看方便 优先级等级口诀: 圆方括号.箭头一句号, 自增自减非反负.针强地址长度, 乘除,加减,再移位, 小等大等.等等不等, 八位与,七位异,六位或,五与 ...
- 一道c语言运算符优先级问题
一道c语言运算符优先级问题 #include <iostream> using namespace std; int main() { char test[] = {"This ...
- C语言操作符优先级
C语言操作符优先级 优先级 运算符 含 义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左至右 2 ! 逻辑非运 ...
- C语言运算符优先级及结合性
今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...
- (转)C语言运算符优先级 详细列表
C语言运算符优先级 详细列表 文章转自:Slyar Home 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数 ...
- c 语言 运算符 优先级
C 语言 运算法优先级 从高 到 低 优先级 运算符 功能 适用范围 结合性 15 () [] . -> 括号 下标 存取成员 存取成员 表达式 数组 结构联合 结构联合 → (左→右) 14 ...
- C语言运算符优先级和ASCII表
1. C语言运算符优先级及结合性 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成 ...
- PHP数据运算优先级总结记忆
运算符优先级
随机推荐
- 机器学习tips
1 为什么随机梯度下降法能work? https://www.zhihu.com/question/27012077中回答者李文哲的解释 2 随机梯度下降法的好处? (1)加快训练速度(2)噪音可 ...
- 分布式存储——ceph 的 python 基础接口
python 使用 boto 库完成分布式存储读.写.判断接口 import boto import boto.s3.connection from boto.s3.key import Key im ...
- java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉
这是java高并发系列第28篇文章. 环境:jdk1.8. 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复 ...
- Python模块之snmp-cmds,easysnmp
一.简介 snmp-cmds模块通过SNMP与目标设备进行通信,此模块适用于windows,此模块是基于系统已安装了net-snmp环境easysnmp模块通过SNMP与谬表设备进行通信,此模块用于l ...
- Greenplum数据库分享
1. 场景描述 最近做了次Greenplum数据库的分享,如下图,把第三章的的架构介绍简单提出来,分享下. 2. 解决方案 就按照ppt贴图了,部分内容稍微做了下马赛克. (这页ppt的下半部分,有实 ...
- idea使用springboot的webservice基于cxf
SpringBoot整合CXF实例: 服务端构建 <dependency> <groupId>org.apache.cxf</groupId> <artifa ...
- net core WebApi——文件分片下载
目录 前言 开始 测试 小结 @ 前言 上一篇net core WebApi--文件分片上传与跨域请求处理介绍完文件的上传操作,本来是打算紧接着写文件下载,中间让形形色色的事给耽误的,今天还是抽个空整 ...
- deepin 15.11 安装 pyenv
GitHub:官方环境:https://github.com/pyenv/pyenv/wiki/Common-build-problems GitHub:官方文档:https://github.com ...
- python 06 深浅拷贝
目录 1. 小数据池 1.1 代码块 1.2 小数据池 1.3 执行顺序 (代码块--小数据池) 1.4 "=="和 "is" 2. 深浅拷贝 2.1 赋值 2 ...
- 小白专场-多项式乘法与加法运算-c语言实现
目录 一.题意理解 二.求解思路 三.多项式的表示 3.1 数组 3.2 链表 四.程序框架搭建 五.如何读入多项式 六.如何将两个多项式相加 七.如何将两个多项式相乘 八.如何将多项式输出 一.题意 ...