(1)逗号表达式:
表达式1,表达式2,表达式3,...
整个表达式的值为最后一个表达式的值
(2)下标引用,函数调用以及结构体操作符([] () . 和 ->)
[] : 下标引用操作符
常用于数组中,
例如:arr[3],arr是数组名,3是索引值
int arr[3] = { 1 , 2 , 3 };
() : 函数调用操作符
如:test();
.和-> : 结构体操作符
. :具体写法为 结构体变量.成员
如:定义一个结构体变量,包含姓名,年龄以及分数
cpp#include <stdio.h> sturct person//定义一个结构体类型包含姓名,年龄,分数 { char name[20]; int age; float score; }; int main() { sturct person a = { "王麻子",25,93.2 };//定义该类型的变量并初始化 printf("%s",a.name);//结构体变量的使用 printf("%d",a.age); printf("%s",a.float); return 0; }
结构体的作用就是创建一个新的类型,具体小编会在之后的文章介绍,此处先了解即可
接下来让我们了解一下结构体的另外一种写法(指针)
-> : 作用原理和 . 是一样的,如下代码
cpp#include <stdio.h> sturct person//定义一个结构体类型包含姓名,年龄,分数 { char name[20]; int age; float score; }; void print(struct* a)//调用函数 { printf("%s",a->name);//结构体变量的使用,指针类型 printf("%d",a->age); printf("%s",a->float); } int main() { sturct person a = { "王麻子",25,93.2 };//定义该类型的变量并初始化 print(&a);//由于使用的是指针,所以实参写为指针类型即带上&符号 return 0; }
(3)各类操作符的优先级
学了这些操作符之后,当面对一些比较复杂的表达式计算的时候,了解他们的结合规律和优先级是必要的
1 圆括号,下标引用[ ] ,. ,->
当一个表达式中有()时,应该首先计算()内的
结合顺序应该时候从左到右
2 非 !、按位取反 ~ 、自增自减 ++,-- 、负号 - 、类型转换 (类型)、指针 * 、取地址 & 、计算字节长度 sizeof
这几类操作符位于第二梯队,结合顺序是从右到左
3 乘、除、取余
结合顺序是从左到右,也就是说当三个操作符同时出现的是时候,从左到右计算
4 加、减
5 左移、右移
6 大于 、小于、大于等于、小于等于
7 等于、不等于
上述四个操作符的结合顺序都是从左到右
8 按位与&
9 按位异或^
10 按位或|
11 逻辑与&&
12 逻辑或||
上述五个操作符的结合顺序也是从左到右
13 条件运算符(? :)
要记住C语言 只有这一个三目操作符!!!
14 赋值运算符
15 逗号表达式
优先级最低
(优先级由高到低)
所有双目运算符中只有赋值运算符的结合方向是从右往左。
另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符。
C语言中有且只有一个三目运算符。
逗号运算符的优先级最低,要记住。
优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符。逻辑运算符中("逻辑非!"除外)