• 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⊙^*

  • 相关阅读:
    时间序列理论专题之二 时间序列的表达
    Ado.net Entity FrameWork的性能问题
    时间序列专题之三 时间序列的分段线性表示
    Tfs 2010使用小技巧
    时间序列理论专题之一 前言
    绝大多数新技术的学习,都是浪费生命
    Tfs2010简体中文版:翻译永远是问题
    MSsql 查询时默认是不区分大小写。 可以用语句强制sql语句查询时区分大小写 狼
    将.NET dll注册到GAC(Global Assembly Cache)中 狼
    js重载 狼
  • 原文地址:https://www.cnblogs.com/blogs-192-168-9-222/p/10225661.html
Copyright © 2020-2023  润新知