操作符详解(三)

引言:前两篇我们讲了一些二进制层面上的操作符,这篇我们来把剩下的操作符给介绍一下。


目录

一、条件操作符(三目操作符)

二、逗号表达式

三、下标引用、函数调用和结构成员

1、[ ] 下标引用操作符

2、(  )函数调用操作符

3、访问成员操作符

四、其他操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符


一、条件操作符(三目操作符)

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;
}

这三个效果是一样的,在结构体中常用.和->。

四、其他操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

 这些常用的操作符我们就不一一介绍了。

猜你喜欢

转载自blog.csdn.net/2301_77125473/article/details/132794675