引言:前两篇我们讲了一些二进制层面上的操作符,这篇我们来把剩下的操作符给介绍一下。
目录
一、条件操作符(三目操作符)
exp1 ? exp2 : exp3
真 计算 不算
假 不算 计算
int a = 5; int b = 10; int m; if (a > b) m = a; else m = b; printf("%d\n", m); m = (a > b ? a : b); printf("%d", m);
在比较两个数的大小的时候,最简单的方法是if-else语句,但是我们在用了条件操作符(三目运算符)的时候会发现变得更简单,而且输出的结果都是一样的。这只是一个最简单的一个例子,在之后的学习中我们会这个操作符也是必不可少的,特别是在一些大型的代码中,我们常常可以用它完成一些判断。
二、逗号表达式
exp1,exp2,exp3,...expN
逗号表达式,就是用逗号隔开多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
举一个简单的例子:
int a = 1; int b = 2; int c = (a > b, a = b + 10, a, b = a + 1); printf("c = %d\n", c);
分析一下这个逗号表达式,a>b并没有改变a,b的大小,继续,a = b + 10,a =12,继续,a,没任何改变,b = a + 1 = 13,所以c就等于13.
让代码走起来:
可以看到最终的结果就是13.
三、下标引用、函数调用和结构成员
1、[ ] 下标引用操作符
操作数:一个数组名+一个索引值
int arr [ 10 ];//创建数组
arr [ 9 ] = 10;//实用下标引用操作符
[ ] 的两个操作数是arr和9
2、( )函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
int Add(int x, int y) { return x + y; } int main() { int a = 0; int b = 0; printf("%d", a);//函数引用操作符 int c = Add(a, b);//函数引用操作符 return 0; }
3、访问成员操作符
. 结构体.成员名
-> 结构体指针->成员名
#define _crt_secure_no_warnings 1 #include<stdio.h> struct book { char name[20]; int price; }; //结构体变量.成员 //结构体指针->成员 void print(struct book* pb) { printf("%s %d\n", (*pb).name, (*pb).price); printf("%s %d\n", pb->name, pb->price); } int main() { struct book b = {"c语言指南", 55}; printf("%s %d\n", b.name, b.price); print(&b); return 0; }
这三个效果是一样的,在结构体中常用.和->。
四、其他操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
这些常用的操作符我们就不一一介绍了。