C语言疑难杂症

1.++运算符(-- 同理)

  如果 n++ 是表达式的一部分,可视其为“先使用n, 再递增”;

  如果 ++n 是表达式的一部分,可视其为“先递增n, 再使用”

2.从右到左的运算符,除此以外全是从左到右

赋值运算符   =         +=        -=       *=       /=      %=       &=       ^=      |=      <<=      >>=
条件运算符 ?:
一元运算符 ++    --    !    ~    +    -    *    &    sizeof_Alignof
类型转换运算符 (类型名称)

3

typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;
/*
给struct LNode取个别名为LNode
给struct LNode*取个别名为Linklist
 */
//因此以下代码成立
LinkList L;
L = (LinkList)malloc(sizeof(LNode));
L = L -> next;

 

移位运算符比逻辑运算符优先级高

优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
 
()
圆括号
(表达式)/函数名(形参表)
 
.
成员选择(对象)
对象.成员名
 
->
成员选择(指针)
对象指针->成员名
 
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
 
++
前置自增运算符
++变量名
单目运算符
++
后置自增运算符
变量名++
单目运算符
--
前置自减运算符
--变量名
单目运算符
--
后置自减运算符
变量名--
单目运算符 [4] 
*
取值运算符
*指针变量
单目运算符
&
取地址运算符
&变量名
单目运算符
!
逻辑非运算符
!表达式
单目运算符
~
按位取反运算符
~表达式
单目运算符
sizeof
长度运算符
sizeof(表达式)
 
3
/
除
表达式/表达式
左到右
双目运算符
*
乘
表达式*表达式
双目运算符
%
余数(取模)
整型表达式/整型表达式
双目运算符
4
+
加
表达式+表达式
左到右
双目运算符
-
减
表达式-表达式
双目运算符
5
 
左移
变量
左到右
双目运算符
>>
右移
变量>>表达式
双目运算符
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
双目运算符
 
小于
表达式
双目运算符
 
小于等于
表达式
双目运算符
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
双目运算符
8
&
按位与
表达式&表达式
左到右
双目运算符
9
^
按位异或
表达式^表达式
左到右
双目运算符
10
|
按位或
表达式|表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1? 表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
 
/=
除后赋值
变量/=表达式
 
*=
乘后赋值
变量*=表达式
 
%=
取模后赋值
变量%=表达式
 
+=
加后赋值
变量+=表达式
 
-=
减后赋值
变量-=表达式
 
 
左移后赋值
变量
 
>>=
右移后赋值
变量>>=表达式
 
&=
按位与后赋值
变量&=表达式
 
^=
按位异或后赋值
变量^=表达式
 
|=
按位或后赋值
变量|=表达式
 
15
,
逗号运算符
表达式,表达式,…
左到右
从左向右顺序运算
posted @ 2020-03-18 14:32  Rao&  阅读(213)  评论(0)    收藏  举报