操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符

导读:本篇文章讲解 操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

操作符:

关系操作符

= < <= !=(用来测试不相等) ==(用来测试相等)

小tips:在编程过程中,注意==和=不小心写错。

逻辑操作符:&&:逻辑与 ||:逻辑或

小tips注意逻辑与/逻辑或和按位与/按位或的的区别是:逻辑操作只是判断该数或者表达式本身的逻辑值是真还是假,而按位与/按位或是将该数的二进制进行位与/位或的操作。

举例如下

#include<stdio.h>
int main()
{
	printf("%d\n", 1 & 2);//将1的二进制和2的二进制按位与
	printf("%d\n", 1 | 2);//将1的二进制和2的二进制按位或
	printf("%d\n", 1 && 2);//将&&左右两边的条件进行判断,同为真,即为真,一假,则为假
	printf("%d\n", 1 || 2);//将||左右两边的条件进行判断,一真则为真,全假才是假
	return 0;
}
0
3
1
1

注意:逻辑操作符与,在使用过程中,左边的值判断为假,则右边的表达式不再进行运算,只进行左边的。

举例如下

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;//a++结果是假,则只执行a++
	printf(" a=%d\n b=%d\n c=%d\n d=%d\n",a, b, c, d);
	return 0;
}
a=1
b=2
c=3
d=4

同样的,逻辑操作符或,在使用过程中,左边判断值为真,则右边表达式不再进行运算,只进行左边的

举例如下

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;//判断||左边a++是假,则进行++b,++b是真,不再进行d++
	printf(" a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d);
	return 0;
}
a=1
b=3
c=3
d=4

条件操作符:exp1 ? exp2 : exp3 其含义为:如果表达式1为真,则执行表达式2,此时表达式2的结果为整个表达式最终的结果,如果表达式2为假,则执行表达式3,此时表达式3的结果为整个表达式最终的结果。

举例

#include<stdio.h>
int main()
{
	int a = 3, b = 4,max;
	max=a > b ? a : b;//如果a>b,则max为a,否则为b,注意这里是冒号不是分号。
	printf("%d\n", max);
	return 0;

}
4

逗号表达式:exp1,exp2,exp3,expN,逗号表达式,就是用逗号隔开的多个表达式,逗号表达式,从左往右依次执行,整个表达式的结果是最后一个表达式的结果。

举例如下

int a = 1,b=2,c=(a>b,a=b+10,b=a+1);
	printf("%d\n", c);
13

小tips:从左往后依次执行,最后一个表达式的结果即为最终结果,而不是只执行最后一个表达式。

那么逗号表达式有什么作用呢?它的作用为在某些特定的场景下,能够使用简便的代码实现功能,将代码量缩减。

举例如下

int a;
	a = get_val();
	count_val(a);
	while (a > 0)//代码1
	{
		a = get_val();
		count_val(a);
	}
	while (a = get_val(), count(a), a > 0)//代码2:使用逗号表达式
	{}

下标引用操作符:操作数:一个数组名+一个索引值

举例如下

int arr[10]={0};
	arr[4] = 10;//[]的两个操作数是arr和4

函数调用操作符:接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

举例如下

int get_max(int x, int y)
{
	return (x > y ? x : y);
}
int main()
{
	int a = 10, b = 20,max;
	max = get_max(a, b);//()函数调用操作符:函数名+若干个函数参数。
	printf("max=%d", max);
	return 0;
}
20

访问一个结构的成员

.结构体.成员名 ->结构体指针->成员名

举例如下

struct stu //创建一个结构体类型 struct stu
{
	char name[20]; //描述成员的相关变量
	int age;
	char id[100];
};  //分号不要丢掉
int main()
{
	struct stu student1 = { "易烊千玺",22,"2110044120" };	//使用struct stu这个类型创建了一个学生对象s1,并初始化
	printf("%d\n", student1.age); //输出对应结构体成员的信息
	printf("%s\n", student1.name);
	printf("%s\n", student1.id);
	return 0;
}
20
易烊千玺
2110044120

下面我们使用指针的方法对成员信息进行访问:

第一种

struct stu
{
	char name[20];
	int age;
	char id[100];
};
int main()
{
	struct stu student1 = { "易烊千玺",22,"2110044120" };
	struct stu* ps = &student1;	//定义一个结构体指针指向student1
	printf("%d\n", (*ps).age);	// *ps就相当于student1
	printf("%s\n", (*ps).name);
	printf("%s\n", (*ps).id);
	return 0;
}
22
易烊千玺
2110044120

第二种:

struct stu
{
	char name[20];
	int age;
	char id[100];
};
int main()
{
	struct stu student1 = { "易烊千玺",22,"2110044120" };
	struct stu * ps = &student1;
	printf("%d\n", ps->age); //使用结构体指针操作符对其进行访问:结构体指针->成员名
	printf("%s\n", ps->name);
	printf("%s\n", ps->id);return 0;

}
22
易烊千玺
2110044120

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81552.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!