2021/3/5 17:31
优先级排序为:算术运算bai符 > 关系运算符 > 赋值运算。

算术运算符中,乘法运算符【*】、除法运算符【/】、取余运算符【%】属于优先级第三级,加法运算符【+】、减法运算符【-】属于第四级。

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。其中,关系运算符【< > <= >= 】属于优先级第六级,等于运算符【==】、不等于运算符【!=】属于优先级第七级。

赋值运算符【= += -= *= /= %= >>= <<.= &= |= ^=】属于优先级第第十四级。

所以,优先级排序为:算术运算符高于关系运算符高于赋值运算。

优先级相关规定:

1、优先级与求值顺序无关。如a+b && bc,虽然优先级最高,但这个表达式求值顺序是从左到右。优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

2、相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

3、指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7 逻辑运算最后结合。

单目运算符高于双目运算符

简单的理解就是i++是先访问i然后再自增,而++i则是先自增然后再访问i的值。

用下面zhuan的代码作为shu一个例子

#include <studio.h>

int main() {

int i,x;

i = 1;

x = 1;

x = i ++; //先让x变成i的值1,再让i加1

print("%d", x); //输出的x为1

print("%d", i); //输出的i为2

i = 1;

x = 1;

x = ++i; //先让i加1, 再让x变成i的值2

print("%d", x); //输出的x为2

print("%d", i); //输出的i为2

}

i++和++i的区别
文章标签: 编译器 java 优化 delete string class
版权
如果有表达式 a = i++ 它等价于 a = i ; i = i + 1;
如果有表达式 a = ++i 它等价于 i = i + 1; a = i;

   1 首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值2 ++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值(可被寻址的值);i++ 的后面一步是自增,不是左值。(2的两步分解与左右值的因果关系只是我的直觉,对错还待考证)3  ++i 和i++ 的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,以及很难察觉的写脏,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。4  i=1 ; j=(++i)+(++i)+(++i); printf("J=%d/n",j); 这个结果是什么?没有结果,因为不同的编译器做出来的结果,我用vc6和gcc出来的结果是一样的,但是我坚信这么多不同编译器的优化规则都会导致这个怪异的结果。回过头来,这样coding,你会疯掉的,左手logic,右手biology千万别走火入魔!

————————————————
版权声明:本文为CSDN博主「David8631」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/David8631/article/details/2707914

建议阅读计算机系统结构
int型的数到底最大值是多少?

friendbaby 2011-09-26 16:15:30 167912 收藏 3
分类专栏: C++ 文章标签: 百度 存储
刚才在百度知道上看见一个网友问int型的数最大能存多少。这个问题其实计算机系统结构里有讲解,

首先,我们要知道在计算机里怎么存储数字的。在计算机里,对数字编码有3种方式:原码、补码、反码。原码其实就是10进制数直接转2进制数的结果。比如:十进制的18,在二进制里是10010。那这里的10010就是原码。我们可以sizeof一下我们自己的电脑上int型占几个字节。我的是4个字节,也就是说只有32个位。如果一个十进制数转位二进制数位数大于32,就溢出,其实也就是存不下了。我们存数不仅仅有正数还有负数,在计算机里如何区分正数负数?我们规定最高位是符号位。为0是正,为1负。所以最高位是不可以参加计算的。比如二进制数1000最高位是符号位的话,转十进制不是8,而是-0,对就是负0(正0的二进制形式是0000)。如果给一个十进制形式的负数,如何计算它的补码?

1.计算这个数绝对值的二进制表示。
2.把2^n写成二进制形式减去这个数,得到的就是补码。
比如:-5,
1。5的二进制形式是:0101.最高位是符合位,为0是正。
2. 1111-101,二进制的减法,补码就是1010.最高位是符合位,为1是负。

反码不常用,我没有细心学。

所以,int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。注意:7的二进制形式最高位为0,如果你对2147483647+1.输出的就是-2147483648。这个数是负数中最大的数,也就是int型可以表示的最小的负数。它的十六进制表示为:0x8fffffff,8的二进制形式最高位是符号位,是1,为负。
int型的数到底最大值是多少?

friendbaby 2011-09-26 16:15:30 167912 收藏 3
分类专栏: C++ 文章标签: 百度 存储
刚才在百度知道上看见一个网友问int型的数最大能存多少。这个问题其实计算机系统结构里有讲解,

首先,我们要知道在计算机里怎么存储数字的。在计算机里,对数字编码有3种方式:原码、补码、反码。原码其实就是10进制数直接转2进制数的结果。比如:十进制的18,在二进制里是10010。那这里的10010就是原码。我们可以sizeof一下我们自己的电脑上int型占几个字节。我的是4个字节,也就是说只有32个位。如果一个十进制数转位二进制数位数大于32,就溢出,其实也就是存不下了。我们存数不仅仅有正数还有负数,在计算机里如何区分正数负数?我们规定最高位是符号位。为0是正,为1负。所以最高位是不可以参加计算的。比如二进制数1000最高位是符号位的话,转十进制不是8,而是-0,对就是负0(正0的二进制形式是0000)。如果给一个十进制形式的负数,如何计算它的补码?

1.计算这个数绝对值的二进制表示。
2.把2^n写成二进制形式减去这个数,得到的就是补码。
比如:-5,
1。5的二进制形式是:0101.最高位是符合位,为0是正。
2. 1111-101,二进制的减法,补码就是1010.最高位是符合位,为1是负。

反码不常用,我没有细心学。

所以,int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。注意:7的二进制形式最高位为0,如果你对2147483647+1.输出的就是-2147483648。这个数是负数中最大的数,也就是int型可以表示的最小的负数。它的十六进制表示为:0x8fffffff,8的二进制形式最高位是符号位,是1,为负。

前面还可以,后面就太绕 ,从根本来说,int用二进制来说,可以存32个字节,又因为最高位用来记录正负,所以能用的只有31字节,再加上 0 这个特殊的数字,所以最大的 int 是 2的31次方减 1 ,负数同理,按理说应该最小的负数是 -(2的31次方减 1) ,但由于会造成一位置无意义,所以负数加一位,所有负数多减少1 ,所以可以存到 -(2的31次方)
-231——231-1

C语言程序设计摘抄笔记3相关推荐

  1. C语言程序设计摘抄笔记2

    2020/7/16 在C语言中,&有三种作用,分别如下: 取地址.单目运算符.用来取一个变量的地址. 比如 int i, *p; p = &i;//这里的&作用是取变量i的地址 ...

  2. c语言用户自己建立数据类型,C语言程序设计学习笔记--用户建立数据类型

    C语言程序设计学习笔记--用户建立数据类型. 9.1定义和使用结构体变量 1.定义:C语言允许用户自己建立不同类型数据组合成的组合型数据类型就是结构体 2.形式: struct 结构体名 { 成员表列 ...

  3. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  4. C语言程序设计学习笔记:P3-判断

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  5. 《C语言程序设计》笔记

    <C语言程序设计>笔记 因为我们大学是先学raptor再学c语言的,所以C语言的书籍会出的有点晚 目录: C语言概述 C语言编程基础 顺序结构程序设计 选择结构程序设计 循环结构程序设计 ...

  6. C语言程序设计学习笔记:P5-循环控制

    本系列文章为浙江大学翁恺C语言程序设计学习笔记,前面的系列文章链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语言 ...

  7. C语言程序设计---读书笔记汇总(整理中)

    目录 一  写在前面 1.1 书籍信息 1.2 简单叙述 二   类型.运算符与表达式 2.1 变量名 2.2 数据类型及长度 2.3 常量 2.4 声明 2.5 算数运算符 2.6 关系运算符与逻辑 ...

  8. 清华郑莉C++语言程序设计学习笔记(1)- 绪论、C++简单程序设计、函数

    程序运行调试 步骤:创建项目.设置断点.运行调试 在生成发布版本前,需要清除早期生成过程中创建的中间文件和输出文件,确保其是最终版本. 操作:①生成->清理解决方案:②debug->rel ...

  9. go语言程序设计学习笔记-1

    https://www.jb51.net/article/126998.htm go标准库文档https://studygolang.com/pkgdoc 1. 如果想要再本地直接查看go官方文档,可 ...

最新文章

  1. SecureCRT安装的注意事项
  2. maven整合S2SH
  3. mysql连接数紧张_Mysql 查看连接数,状态,最大并发数
  4. 如何处理Angular依赖注入的错误消息: NullInjectorError No provider for EffectsRootModule!
  5. 创建一个自己的GitHub,创建自己的开源项目
  6. 【CodeForces - 761B】Dasha and friends (思维,模拟,构造)
  7. 濮阳第二届创客机器人比赛_咸阳市举行第二届机器人大赛暨第一届创客大赛
  8. Struts 1 和 Struts 2 的线程安全
  9. 互联网公司们眼中的最强quot;世界杯阵容quot;
  10. python查看是否存在某个变量名
  11. Java-Integer和int有什么区别
  12. 关于阿里云,有什么故事?
  13. libcrypto yum 安装_centos,_缺少libcrypto.so.10,怎么修复,centos - phpStudy
  14. Mac电脑如何添加打印机?
  15. 基于socket的即时通信系统的设计与实现
  16. 古罗马帝国莱茵河-多瑙河防线之谜
  17. Java代码安装maven jar_Java中Maven项目导出jar包配置的示例代码
  18. 联想小新 Pad和联想小新 Pad Pro有什么区别 哪个好详细性能配置对比
  19. 抗混叠滤波matlab实现,采用抗混叠滤波器的高性能、12位、500 MSPS宽带接收机
  20. 电影《少年的你》影评分析

热门文章

  1. Data URI详细介绍
  2. Cadence 16.6在win10系统上的安装
  3. Spring Cloud笔记(8)使用Seata管理分布式事务
  4. m基于Berlekamp-Massey钱搜索算法的BCH译码误码率matlab仿真
  5. Android WIFI扫描时延
  6. QLineEdit的右边添加按钮
  7. 什么是无序列表?如何定义无序列表?
  8. Ubuntu 18.04 软件源修改成国内源(文件或界面形式)
  9. 如何改善自己的情绪?
  10. vuex基础-Vuex是什么呢?