初步认识c语言:函数,数组,操作符

目录

一.初识函数

二.初识数组

1. 数组的形式及其定义

 2. 如何访问数组?

三.操作符

  算目操作符

 1、/ (除法)

2、% (取模、取余)

  移位操作符

 1、<< 左移操作符 

2、>>右移操作符

逻辑操作符

1、&&  与

2、||  或

  3.! 逻辑非

单目操作符

1.!:逻辑反操

2.-  :负值作符

3.+ :正值

4.& :取地址

5.sizeof 操作符

6.- - 自减

7.++ 自增

8.*  解引用操作符

9.(类型) 强制类型转换

关系操作符

>、>=、<、<=、==、!=

条件操作符

表达式1 ? 表达式2 : 表达式3

逗号表达式

表达式1,表达式2,……,表达式n


下列只列出了常见的操作符,初步认识就好

一.初识函数


什么是函数?函数有哪些用途?
第一,函数就是 C 语言的模块,一块一块的,有较强的独立性,可以相互调用,换句话说,C 语言中,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。. 这就是结构化程序设计,所以面向过程的语言又叫结构化语言。第二,函数就是一系列 C 语句的集合,能完成某个特定的功能。.需要该功能的时候直接调用该函数即可,不用每次都堆叠代码。需要修改该功能时,也只需要修改和维护这一个函数即可。

 

 例如:下图为主函数和子函数的应用:求和函数,在执行主函数时候,程序运行到“int sum =Add(n1,n2)”时会调用外部“Add子函数”来实现两个数相加。

二.初识数组

1. 数组的形式及其定义

     “一种相同元素类型的合集”

 2. 如何访问数组?

   由此程序可之访问数组时候是按下标顺序来的(0——9)

三.操作符

  算目操作符

 1、/ (除法)

在除法运算中,若除号两边的操作数都为整型,则结果是取商的部分

操作数:指的就是 被除数 与 除数

eg:a/b a和b均为整数,若a<b时 此结果为0

(小数除以大数结果为0)

在两个整数运算中C语言遵从的是(向0取整)法则

所谓向0取整 就是在 数轴上朝向0的方向取整

eg :  10/8=1.25 数学运算

        10/8 =1  C语言

        因为1.25>0 在取整的时候不会取到整数2 而是取到1 因为1 比2更接近与0
 

在除法运算中,只要有一个操作数是浮点数,就是浮点数的除法运算

所谓浮点数的除法运算就是,最后的结果是一个浮点数

​
#include <stdio.h> 
int main()
{
    printf("%d\n",20/10);//结果就是一个是整数 
    //小数除大数
    printf("%d\n",2/19);//结果为0 
    printf("%lf\n",20.0/10);//结果是一个浮点数
    printf("lf\n",20.0/10.0);//结果是一个浮点数    
    return 0;
}​

2、% (取模、取余)

在取模运算中 取到的结果是两数相除之后所留的余数

取余运算两边的操作符只能是整数

在模运算中,a%b  当a的值小于b时 结果为a

(小数模大数结果为小数本身)

#include <stdio.h>
int main()
{
	//两数进行模运算
	printf("%d\n", 3 % 2); //1
 
	//小数 模 大数 得到的是小数本身
	printf("%d\n", 4 % 5); //3
	return 0;
}

  移位操作符

 1、<< 左移操作符 

移动的时二进制位, 移动的是二进制的补码

移位规则:

左移操作符如何移动:左边丢弃,右边补0

移位操作符不能移动负数位

#include <stdio.h>
int main()
{
	//左移操作符 <<
	int a = 10;
//a 的原码:00000000 00000000 00000000 00001010
//正数的原码 反码、补码 相同
	int b = a << 1;
//将a左移一位:00000000 00000000 00000000 00010100
// 左移一位之后还是一个正数,原、反、补 相同
// b=20
	printf("%d\n", b);
}

2、>>右移操作符

移动的是二进制位, 移动的是二进制位的补码

移位规则:

1、算术右移:右边丢弃左边补符号位(大部分编译器都用)

2、逻辑右移:右边丢弃左边补0

#include <stdio.h>
int main()
{
//0 表示正数,1表示负数
	int a = -10;
//a原码 : 10000000 00000000 00000000 00001010
// 反码: 11111111 11111111 11111111 11110101
// 补码: 11111111 11111111 11111111 11110110
//将补码算术右移一位
	int b = a >> 1;
//补码:11111111 11111111 11111111 11111011
//	    10000000 00000000 00000000 00000100
//原码:10000000 00000000 00000000 00000101
// b=-(1+4)=-5
	printf("%d\n", b);
	return 0;
}

逻辑操作符

1、&&  与


#include <stdio.h>
int main()
{
	//&:有0为假 有为1为真
	int a = 7;
	int b = 20;
	int c = a && b;
	printf("%d\n", c);//最后结果为0

	return 0;
}

2、||  或

#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = a || b;
	printf("%d\n", c);

	return 0;//结果为1
}

  3.! 逻辑非

! 逻辑反操作符

让真变为假,假变为真

单目操作符

操作数只有一个的操作符号

1.!:逻辑反操

2.-  :负值作符

3.+ :正值

4.& :取地址

5.sizeof 操作符

sizeof 操作符 是一个操作符,要区分它与函数

sizeof 主要用于计算数据类型在内存中的大小(单位是字节)

在计算变量的大小的时候sizeof的括号可以省略

6.- - 自减

前置--:先--,后使用 (先让变量自减1,再使用)

后置--:先使用,后--  (先使用,再让变量自减1)

#include <stdio.h>
int main()
{
	//前置--
	int a = 10;
	int b = --a;
	//此代码执行了两部操作
	// 第一步:a=a-1;
	// 第二步:b=a;
	printf("%d\n", b);//b的值为9
 
	//后置--
	int c = 20;
	int d = c--;
	//此代码也执行了两步操作
	// 第一步:d=c;
	// 第二步:c=c-1;
	printf("%d\n", d);//d的值为20
	return 0;
}

7.++ 自增

前置++:先++后使用(先让变量自增1,再使用)

后置++:先使用后++(先使用,再让变量自增1)

#include <stdio.h>
int main()
{
	//前置++
	int a = 10;
	int b = ++a;
	//分为两步
	// a=a+1;
	// b=a;
	// 先让a自增1 再使用a 把a的值赋给b
	printf("%d\n", b);//b的值为11
 
	//后置++
	int c = 20;
	int d = c++;
	//分为两步
	// d=c;
	// c=c+1;
	//先使用c 把c的值赋给d 再让c自增1
	printf("%d\n", d);//d的值为20
	return 0;
}

8.*  解引用操作符

解引用操作符,也被叫做间接访问操作符,运用于指针

作用:将指针变量进行解引用操作,就是取到指针变量所指向的内容

9.(类型) 强制类型转换

强制类型转换就是将一种类型的数据,强制转换成另一种类型的数据

注意:当大类型往小类型转换时会发生截断

当 float 或者 dauble 类型强转为 int 类型时: 发生截断 取到的是整数部分

当 char 类型 强转为 int 类型时:取到的是其对于的 ACSII码值

#include <malloc.h>
#include <stdio.h>
 
int main()
{
	// float 转 int 截断取整数部分 
	float a = 3.14f;
	int b = (int)a;
	printf("%d\n", b);// b为3
 
	// double 转 int 截断取整数部分 
	double d = 4.225;
	int e = (int)d;
	printf("%d\n", e);// e为4
 
	// char 转 int  取到ASCLL值
	char c = 'A';
	int f = (int)c;
	printf("%d\n", f);// f 为 65
 
	//动态内存开辟
	// 将在堆区上开辟的空间强制转化为int* 类型 赋给 指针p 
	int* p = (int*)malloc(sizeof(int)* 13);
 
	//时间戳产生随机数
	//将time 函数的返回值强制转化成 unsinged int (无符号整型) 
	// srand 函数的参数是一个无符号整型所以强制类型转换
	srand((unsigned int)time(NULL));
	int x = rand();//产生一个 0 - 32767 的随机数
	printf("%d\n", x);//每次打印出现的结果都不一样
 
	return 0;
}

关系操作符

>、>=、<、<=、==、!=

跟数学中的判断一样,

不过在这里多了一个 != (不等于):判断两个数是否不相等

条件操作符

表达式1 ? 表达式2 : 表达式3

表达式1 ?表示式2 :表达式3 ;

条件操作符,又叫三目运算符,因为有三个操作数

当表达式1 为真执行表达式2 ,否则执行表达式3

#include <stdio.h>
 
int main()
{
	//输入两个数打印两个数中的较大值
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	
	int max = (a > b ? a : b);
	printf("%d\n", max);
 
	//a > b ? printf("%d\n", a) : printf("%d\n", b);
	return 0;
}

逗号表达式

表达式1,表达式2,……,表达式n

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

逗号表达式从左向右依次执行

逗号表达式的结果就是最后一个表达式

#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = 30;
	
	//d的结果就是逗号表达式中最后一个表达式的结果
	//也就是将c的值赋给d
	int d = (a, b, c);
	printf("%d\n", d); // d为30
}

猜你喜欢

转载自blog.csdn.net/fcccfffg/article/details/132010949