C语言 优先级

C语言中的优先级很重要,详细分的话,有15级

在运算中,需要

第一级

[]  数组下标    数组名[下标常量]  

()  圆括号     (表达式)函数名 (形参量)

.   成员变量(对象)   对象.成员

-> 成员选择 (指针) 对象指针->成员名

这里参考这个大佬整理的  偷懒

大佬

这里我也梳理一下

运算符
初等运算符   取值
()  优先计算括号内部
[]  数组的下标取值运算符
.    结构体内部访问成员运算符 结构体变量直接访问
->  结构体外部访问成员运算符 通过结构体所在地址访问内部成员
单目运算符 只有一个操作数
! 逻辑非   !0 1真   !1 0假   !2 0假
~  按位取反(二进制)
    char a=3;   0000  0011  有符号
    ~a == 1111 1100  //  -127+3 -124
++ 自增运算符   (需要改变自己的值,有赋值运算)
-- 自减运算符
    ++--前置和++--后置运算符的区别 (对自己赋值)
    ++--前置,单目运算符正常写法,正常运算
    ++--后置,优先级改变为最低,本条指令全部执行完成后,再进行++--
        ++1  不成立  1是常量
        int n = 0;
        ++n;   // n+1  n=n+1
        n++;   // n n=n+1  最后运行
-    负号运算符    无符号变量使用负号?
        int n = 5;
        -n == -5
        unsigned int n = 5;
        -n ==  -5    参与运算等价 参与赋值时需要考虑数据类型
        n=-n;     -5 参加到 n 强制赋值 n=-5
类型转换()
    自动转换 运算过程中数据类型自动向高精度转换
        int a=2;
        float b=3.14;
        int c=a+b;     5
        float d=a+d;   5.140000
    强制转换 把数据进行指定类型的输出 使用类型转换符进行强制转换
        int n=5
        (char)n     n还是int   只是拿来运算  用char去读
        float a=3.14
        int x=(int)a   == 3
    整形->单精度->双精度
*   解指针 取指针保存的地址的值
        int n = 5
        int *p =& n;
        *p == 5
&   取地址 取空间的地址(把整个空间看做一个整体,空间的首地址作为空间地址)
    %p 以十六进制输出
sizeof 长度运算符,计算所占的空间字节大小  关键字也是运算符
        sizeof 和 strlen()
        sizeof 是关键字也是运算符 测量空间大小
        strlen() 函数  测量有效字符串

算术运算符

* 乘法

/ 除法 两边数据都是整数,则为取整运算,有一个为小数,则运算除法

% 求余 必须为整数,除数的符号是余数的符号

+ 加法

- 减法

位移运算符
<<  左移动
    int n = 5   0000  0101
    int m = 0
    m = n <<3;  0010  1000
>>  右移动

关系运算符号
>
>=
<
<=
==
!=
逻辑运算符  优先级顺序颠倒
&    按位与     遇0为0  其他为1
    1101 & 0011  == 0001    乘法运算
^    按位异与   相同为0,不同位1
    1101 ^ 0011  == 1110  
|    按位或     遇1为1   其他为0
    1101 | 0011  == 1111
    
&&    逻辑与  前面为假,则不运算后面
    int n = 5
    1>2&&++n;  n不变n=5
    2>1&&++n;  输出1   ++n 非0为真
||    逻辑或  前面为真,则不运算后面
    int n = 5
    2>1||++n;  n不变n=5
条件运算符
?:  三目运算符判断问号前面是判断条件  冒号前面为真语句 后面是假语句
a>b? c:d  a>b=1  执行c  a>b=0  执行d
    int n=1 m=2
    int x1
    x1=1>2?n--:m++  x1=2   n=1  m=3
 

赋值运算符
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
计算的同时把值赋给自身
    int n = 5
    n+1;//n=5;
    n++; //n=6;                ++n; n=6
    n=n+1; n=6
    n+=1   n=6
逗号运算符
,分隔作用 从左到右

  int n=1,m=2,q=3,w;
  w=(n=5,q=n+m,q--);
  printf("w%d ",w);

首先运算的n=5 q=n+m=7 将7赋值给w  q-- 为6

输出为 7

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值