C语言学习入门之操作符详解(下)

本篇继续介绍操作符

)

6. 单目操作符

6.1 单目操作符介绍

操作符功能
!逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
- -前置,后置- -
++前置,后置++
*间接访问操作符
(类型)强制类型转换

代码演示:

#include<stdio.h>
int main()
{
	int a = -10;
	int* p = NULL;
	printf("%d\n", !2);
	printf("%d\n", !0);
	a = -a;
	p = &a;
	printf("%d\n",sizeof(a));
	printf("%d\n", sizeof a);
	printf("%d\n", sizeof(int));
	//printf("%d\n", sizeof int);报错
	return 0;
}

运行结果:
在这里插入图片描述

可以看出int型长度为4个字节

代码演示:

#include<stdio.h>
int main()
{
	int a = -10;
	printf("%d\n", sizeof a);
	printf("%d\n", sizeof int);//报错
	return 0;
}

在这里插入图片描述

注意:第七行报错,应输入表达式printf("%d\n",sizeof(int));,不带括号时只可以输入单个字符

6.2 sizeof 和 数组

代码演示:


#include <stdio.h>
int main()
{
	int a = 0;
	int arr[3] = {1,2,3};
	char str[] = "hello";
    int length=sizeof(arr)/sizeof(int);
	int len_a = sizeof(a);
	int len_arr = sizeof(arr);
	int len_str = sizeof(str);
	printf("len_a=%d\n",len_a);
	printf("len_arr=%d\n", len_arr);
	printf("len_str=%d\n", len_str);
	printf("length=%d\n",length);
	return 0;
}

运行结果:

在这里插入图片描述

可以看出:数组长度=数组占内存空间/单个元素所占空间

6.3 ++ 和 - - 运算符

前置++和- -

代码演示:

#include <stdio.h>
int main()
{ 
	int a = 0;
	int x = ++a;
	int y = --a;
	printf("%d\n",x);
	printf("%d\n",y);
	return 0;
}

运行结果:
在这里插入图片描述

分析:
int x = ++a;中,先对a 进行自增,然后使用a,也就是表达式的值是a自增之后的值,同理,int y = --a;中,a先自减,再使用

后置++和- -

先使用a,再增加。即上例int x = ++a;中,先使用 a = 0,再增加 a = 1,即 x = 0 , y = 1

7. 关系操作符

名称功能
>
>=
<
<=
!=用于测试“不相等”
==用于测试“相等”

注意:在编程的过程中== 和=不小心写错,导致的错误

8. 逻辑操作符

&& 逻辑与
|| 逻辑或
逻辑与:两个值中一个为假,则判断为假
逻辑或:两个值中一个为真,则判断为真

区分逻辑与和按位与
区分逻辑或和按位或

1&2----->0
1&&2---->1
1|2----->3
1||2---->1

9. 条件操作符

exp1 ? exp2 : exp3

代码演示:

#include <stdio.h>
int main()
{ 
	int a = 10;
	int b = 0;
	int c = 0;
	if (a > b)
		b = 3;
	else
		b = -3;
	c = (a > b ? 3 : -3);
	printf("%d %d\n", b, c);
	return 0;
}

运行结果:

在这里插入图片描述

分析:
exp1 ? exp2 : exp3
如果表达式1为真,那么就计算表达式2,表达式2的结果为整个式子的 结果
如果表达式1为假,那么就计算表达式3,表达式3的结果为整个式子的结果
相比于条件语句条件操作符更简洁

10. 逗号表达式

exp1, exp2, exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式

#include <stdio.h>
int main()
{ 
	int a = 1; 
	int b = 2; 
	int c = (a > b, a = b + 10, a, b = a + 1);//逗号表达式
	printf("%d\n", c);
	return 0;
}

运行结果:在这里插入图片描述

分析:逗号表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果

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

11.1 下标引用

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

int arr[10]; 创建数组
arr[9] =10; 实用下标引用操作符
[ ]的两个操作数是arr和9。

11.2 函数调用

() 函数调用操作符

代码演示:

#include <stdio.h>
void test1() 
{ 
	printf("haha\n");
} 
void test2(const char* str) 
{
	printf("%s\n", str); 
}
int main()
{ 
	test1();
	//实用()作为函数调用操作符。 
	test2("hello world!");
	//实用()作为函数调用操作符。 
	return 0;
}

运行结果:
在这里插入图片描述

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

11.3 访问一个结构的成员

访问方法:

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

代码演示:

#include <stdio.h>
//学生
struct Stu
{
	//成员
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};
void print(struct Stu* ps)
{
	printf("%s %d %s %s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).tele);
	//->
	//结构体指针变量->成员名
	printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->tele);
}

int main()
{
	struct Stu s = {"zhangsan", 20, "nan", "15596668862"};
		//结构体对象.成员名
	printf("%s %d %s %s\n", s.name, s.age, s.sex, s.tele);
	print(&s);
	return 0;
}

运行结果:在这里插入图片描述

总结

这两期关于操作符的介绍就到此结束了,有什么错误评论指出万分感谢!!最后,如果这篇文章对你有帮助,就三连一下吧,谢谢支持。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoLo♪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值