【C语言学习】————操作符、关键字

4_6学习浅谈

  • 1、操作符
  • 2、关键字

1、操作符

单目操作符
++ - - ~ & *

++与- -操作符分为前置与后置关系,看如下代码:

    int a = 10;
	int b = ++a;
	printf("%d\n %d", a, b);//看一下a与b的值为多少。

这输入一个前置++问题,代表先进行++操作符的运算,而后进行=操作符的运算。故b=11,a=11.

【C语言学习】————操作符、关键字_第1张图片

下面看一个后置++代码:

    int a = 10;
	int b = a++;
	printf("a=%d\nb=%d", a, b);

此时++后置,先进行=运算符的运算,而后进行++运算符的运算。故b=10,a=11.

【C语言学习】————操作符、关键字_第2张图片

运算符- -同理。

—————————————————————————————
下面介绍~运算符,该运算符代表对变量按位取反。

提到这个运算符就要介绍一下数据在内存中怎么存储:
①数据在内存中以二进制的方式存储
②数据在内存中存储的是本身的补码形式(正数原码 反码 补码相同,这里只介绍负数形式)
【C语言学习】————操作符、关键字_第3张图片

下面来看一段代码

    int a = 0;
	int b = 1;
	printf("~a=%d\n~b=%d", ~a, ~b);

根据上面数据如何存储来分析这道题:

【C语言学习】————操作符、关键字_第4张图片
【C语言学习】————操作符、关键字_第5张图片

—————————————————————————————
&与*操作符
放到介绍指针时一起介绍。

2、关键字

【C语言学习】————操作符、关键字_第6张图片

sizeof关键字实现:

    printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(char));
	printf("%d\n", sizeof(short));
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(long long));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(double));

在这里插入图片描述

② struct关键字实现:
struct代表结构体,以人为例,可以细分为一个人的姓名,身高,体重,年龄。

struct Human
	{
		char name[20];//记录名字
		int tall;//记录身高
		int age;//记录年龄
		int weight;//记录体重

	};
	//以李四举例
	struct Human lisi = { "李四", 175, 18, 70 };
	struct Human *p = &lisi;
	printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);
	

【C语言学习】————操作符、关键字_第7张图片
通俗来讲,struct就是一个包含着各种类型变量的大数组。

③ typedef关键字实现

struct Human
	{
		char name[20];//记录名字
		int tall;//记录身高
		int age;//记录年龄
		int weight;//记录体重

	};
	typedef struct Human student;//——————————
	//以李四举例
	student lisi = { "李四", 175, 18, 70 };
	student *p = &lisi;
	printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);

相当于给我们创建的结构体变量取个别名为“student”,“student”代表着我们创建的结构体变量。

打印出是和上一个一样的。
【C语言学习】————操作符、关键字_第8张图片

④ static关键字的用法
tip1:用来修饰局部变量
tip2:用来修饰全局变量
tip3:用来修饰函数

上次的文章有提到,局部变量与全局变量均存在作用域与生命周期,static用来改变它们的作用域与生命周期,来看一段代码

int sum(int a)
{
	int c = 0;
	static int b = 3;
	c += 1;
	b += 2;
	return (a + b + c);
}
int main()
{
	int i;
	int a = 2;
	for (i = 0; i < 5; i++)
	{
		printf("%d,", sum(a));
	}

分析: 根据上个文章所提到,变量出了所在的{}范围就会销毁,故不妨假设打印出了八个8,。来看真正结果
【C语言学习】————操作符、关键字_第9张图片
和我们所假设的不同,static在里面“作怪”,可推知,static修饰的局部变量的生命周期会被延长至与整个程序的生命周期相同,故出了原作用域{}后并没有被销毁
————————
来看static修饰的全局变量:
全局变量的作用域是整个工程,生命周期同程序相同。
【C语言学习】————操作符、关键字_第10张图片
下面是用static修饰后
【C语言学习】————操作符、关键字_第11张图片
可以看到无法解析变量n。故可知道static修饰全局变量后,全局变量不再作用于整个工程,而作用于自己所在的文件中。
———————
先看没有修饰函数时
【C语言学习】————操作符、关键字_第12张图片

这是一个求和函数,在一个文件中创建与定义,在另一个文件中调用,但当被static修饰后
【C语言学习】————操作符、关键字_第13张图片
这个求和函数无法被调用,故函数同全局变量一样,被static修饰后都只能作用于本文件内。

你可能感兴趣的:(C语言学习心得,c语言,操作符,statistics,sizeof,typedef)