【初识C语言】笔记(1-3)

目录

1.操作符

1.1算数操作符

1.2位移操作符

 1.3位操作符

1.4赋值操作符

1.5单目操作符

 1.6关系操作符

 1.7逻辑操作符

1.8条件操作符(三目操作符)

1.9逗号表达式

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

2.常见关键字

 2.1关键字typedef

2.2关键字static

2.2.1 修饰局部变量

 2.2.2修饰全局变量

2.2.3修饰函数


1.操作符

1.1算数操作符

注: / 除法,得到的是商

       除法操作符的两端如果都是整数,执行的是整数除法,只要有一个浮点数则执行浮点型除法

       %取模,得到的是余数,%只能作用于整数

1.2位移操作符

 1.3位操作符

按位与,按位异或,按位或

1.4赋值操作符

 

 

1.5单目操作符

#include <stdio.h>
int main()
{
	int flag = 3;
	//C语言中,0表示假,非0表示真
	
	//flag为真打印hehe
	if (flag)
	{
		printf("hehe\n");
	}

	//flag 为假,打印haha
	if (!flag)
	{
		printf("haha\n");
	}
	return 0;
}

 后置--,先使用,再--,前置--,先--,再使用

 后置++,先使用,再++,前置++,先++,再使用

#include <stdio.h>
int main()
{
int a = 10;
int b = a--;//后置--,先使用,再--
printf("a=%d b=%d\n", a, b);//9 10
return 0
}

强制类型转换:()里放想要转换的类型

 1.6关系操作符

 

 1.7逻辑操作符

 

 逻辑与:并且,操作符两边全部满足条件

逻辑或:或者,操作符两边有一个满足条件即可

1.8条件操作符(三目操作符)

exp1 ? exp2 : exp3

 如果exp1为真,则exp2为整个表达式的结果;如果exp1为假,则exp3为整个表达式的结果

#include <stdio.h>
int main()
{
	int a = 3;
	int b = 5;
	int m = 0;
	scanf("%d %d", &a, &b);
	m = (a > b ? a : b);//条件操作符/三目操作符
	printf("%d\n", m);

	return 0;
}

1.9逗号表达式

exp1 , exp2 , exp3 , …expN 

 

 逗号表达式的特点:表达式从左向右依次计算,但是整个表达式的结果是最后一个表达式的结果。

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

[]   ()   .    ->

    arr  [4]  中[ ]为下标访问操作符,arr和4是[ ]这个操作符的操作数

 Add(a,b)中( )为函数调用操作符,Add,a,b为( )这个操作符的操作数

2.常见关键字

 C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。

return  -函数中返回值

 

 

 2.1关键字typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。

 例如:

//将unsigned int 重命名为uint, 所以uint也是一个类型名
typedef unsigned int uint;
int main()
{
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;
    uint num2 = 0;
    return 0;
}

2.2关键字static

C 语言中:
static 是用来修饰变量和函数的
1. 修饰局部变量 - 称为静态局部变量
2. 修饰全局变量 - 称为静态全局变量
3. 修饰函数 - 称为静态函数

2.2.1 修饰局部变量

//代码1
#include <stdio.h>
void test()
{
    int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}
//结果为1 1 1 1 1 1 1 1 1 1
//代码2
#include <stdio.h>
void test()
{
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}
//结果为1 2 3 4 5 6 7 8 9 10

 对比代码1和代码2的效果理解static修饰局部变量的意义。

 结论:

一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的

存储位置发生了变化,使得局部变量出了作用域不会销毁,影响了变量的生命周期

 作用域不受影响

 2.2.2修饰全局变量

结论:

static修饰全局变量这时全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件内部使用,其他.c文件无法使用,影响了变量的作用域。

2.2.3修饰函数

结论:

 函数是具有外部链接属性的,static 修饰函数 后,函数的外部链接属性就变成了内部链接属性,被static修饰的函数只能在自己所在的.c文件内使用,其他.c文件无法使用,最终相当于影响了作用域

猜你喜欢

转载自blog.csdn.net/2201_75366661/article/details/128421695
1-3