简单点-c-lesson3(数组,操作符,关键字)

1.数组

数组:一组相同类型元素的集合
(1)局部数组未初始化,数组内容为随机值。
(2)数组进行下标式访问

#if 0
#include <stdio.h>
#include <windows.h>

int main(){
	//数组初始化
	int arr[] = {1,2,3,4,5};
	//int arr1[5] = {1,2,3,4,5}; 
	
	//数组元素个数
	int num = sizeof(arr) / sizeof(arr[0]);

	//数组遍历,元素求和
	int i = 0;
	int total = 0;
	for(; i<num; i++){
		printf("arr[%d]:%d\n", i, arr[i]);
		total += arr[i];
	}
	printf("total: %d\n",total);

	//数组大小-元素大小-元素个数
	printf("%d\n",sizeof(arr));//整个数组的大小 --20
	printf("%d\n",sizeof(arr[0]));//一个元素的大小 --4
	printf("%d\n",sizeof(arr) / sizeof(arr[0]));//数组元素个数 --5
	system("pause");
	return 0;
}
#endif

遍历数组,并求数组元素的和。数组进行下标式访问
在这里插入图片描述
计算数组元素个数,整个数组大小。
在这里插入图片描述
数组初始化:局部数组未初始化,数组内容为随机值
在这里插入图片描述

2.操作符

操作符:
	1、算术操作符
		+ - * / % (注:/除数不能为0)
	2、移位操作符
		左移<<:左移一位乘2
		右移>>:右移一位除2
		注:二进制存储,即对二进制序列进行移位操作
		   移位操作并不会改变原先的值,要想改变,只能进行赋值操作
		 eg:十进制数:1234 = 1*10^3 + 2*10^2 +3*10^1 + 4*10^0 = 1000+ 200 +30 +4 = 1234(10的次方,是权重,后面有几位,则权重就是多少。)
	3、按位操作符
		 &:1&1 = 1 1&0 = 0 0&1 = 0 0&0 = 0 ---有0为0
		 |:1|1 = 1 1|0 = 1 0|1 = 1 0|0 = 0 ---都0为0
		 ^:1^1 = 0 0^1 = 1 1^0 = 1 0^0 = 0 ---相同为0(相同为真,不同为假)
	4、赋值操作符
		= += -= *= /= %= >>= <<= &= |= ^=
		注:初始化和赋值的概念:
		初始化,把开辟空间和放置数据内容一起进行。int x = 0;
		赋值:int y;//在内存中开辟空间
		      y = 20;//向空间赋值数据
		
	5、单目操作符
		! + - & sizeof ~ -- ++ * (类型)
		前置++:++i(先自增,后赋值)
		后置++:i++(先使用,后自增)
		注:for循环中,i++和++i使用层面没有区别,效率也没区别、唯一区别就是赋值顺序不同。
	6、关系操作符
		> < >= <= == !=
	7、逻辑操作符
		&& ||
	8、条件操作符(三目运算符)
		exp1 ? exp2:exp3
	9、逗号表达式
		,(结果为最后一个)
	10、下标引用、函数调用、结构成员
		[]  () -> .

初始化和赋值的概念:

(1)初始化,把开辟空间和放置数据内容一起进行。
int x = 0;
(2)赋值:
int y;//在内存中开辟空间
y =20;//向空间赋值数据

在这里插入图片描述

移位操作符:>> <<

左移<<:左移一位乘2
右移>>:右移一位除2
注:
(1)二进制存储,即对二进制序列进行移位操作
(2)移位操作并不会改变原先的值,要想改变,只能进行赋值操作
(3)eg:十进制数:1234 = 110^3 + 210^2 +310^1 + 410^0 = 1000+ 200 +30 +4 = 1234(10的次方,是权重,后面有几位,则权重就是多少。)

#if 0
#include <stdio.h>
#include <windows.h>

int main(){
	int x = 15;//00000000 00000000 00000000 00001111
	printf("%d\n", x<<1);//00000000 00000000 00000000 00011110 --30
	printf("%d\n", x>>1);//00000000 00000000 00000000 00000111 --7

	printf("%d\n",x);//15  移位操作并不会改变原先的值,要想改变,只能进行赋值操作
	x = x >> 1;//此时赋值后,x的值发生了改变
	printf("%d\n",x);//7
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

按位操作符:& !^

(1) &:1&1 = 1 1&0 = 0 0&1 = 0 0&0 = 0 —有0为0
(2) |:1|1 = 1 1|0 = 1 0|1 = 1 0|0 = 0 —都0为0
(3) :11 = 0 0^1 = 1 1^0 = 1 0^0 = 0 —相同为0(相同为真,不同为假)

#if 0
#include <stdio.h>
#include <windows.h>

int main(){

	printf("%d\n",2&6);//2
	printf("%d\n",2|6);//6
	printf("%d\n",2^6);//4

	system("pause");
	return 0;
}
#endif

在这里插入图片描述

单目操作符:!(进行逻辑反)

#if 0
#include <stdio.h>
#include <windows.h>

int main(){
	int flag = 1;
	if(!flag){ //if(!(1 == flag))
		printf("....\n");
	}else{
		printf("!!!!\n");
	}

	system("pause");
	return 0;
}
#endif

在这里插入图片描述
取地址:&

(1)变量在内存中有对应的地址;
(2)打印地址使用0x%p(十六进制输出)

#if 0
#include <stdio.h>
#include <windows.h>

int main(){
	int x = 0;
	printf("%d\n",x);
	printf("%p\n",&x);

	system("pause");
	return 0;
}
#endif      

在这里插入图片描述

按位取反:~(对数据取反)

(1)unsigned int,打印是使用%u

#if 0
#include <stdio.h>
#include <windows.h>

int main(){
	//00000000 00000000 00000000 00000001
	//11111111 11111111 11111111 11111110
	unsigned int x = 1;
	printf("%u\n", ~x);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

++和–

(1)前置++:++i(先自增,后赋值)
(2)后置++:i++(先使用,后自增)
 注:for循环中,i++和++i使用层面没有区别,效率也没区别、唯一区别就是赋值顺序不同。

#if 0
#include <stdio.h>
#include <windows.h>
int main(){
	int x = 10;
	int y = x++;//先赋值、再++
	int z = ++x;//先++、再赋值
	printf("%d\n",x);
	printf("%d\n",y);
	printf("%d\n",z);

	system("pause");
	return 0;
}
#endif

在这里插入图片描述

#if 0
#include <stdio.h>
#include <windows.h>
int main(){
	int x = 10;
	int y = x--;//先赋值、再--
	int z = --x;//先--、再赋值
	printf("%d\n",x);
	printf("%d\n",y);
	printf("%d\n",z);

	system("pause");
	return 0;
}
#endif

在这里插入图片描述

逻辑操作符:

(1)&& :两个均为真,才为真。一个为假,为假。
具有短路效果,第一个为“假”就不进行后面的。只有“真假”两种结果
(2)|| :两个均为假,才为假。一个为真,为真。
具有短路效果,第一个为“真”就不进行后面的。只有“真假”两种结果

#if 0
#include <stdio.h>
#include <windows.h>
int main(){
	int x = 10;
	int y = 20;
	if((x>=10 && y<=20)){
		printf("bbbbb\n");
	}else{
		printf("aaaaa\n");
	}
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

3.逗号运算符

(1)可以将控制台控制在桌面,看到运行的结果。system(“pause”);
需要引用头文件;#include <windows.h>
(2)逗号运算符以最后一个值为结果

#if 0
#include <stdio.h>
#include <windows.h>
int main(){
	int a = (1,2,3,4,5,6);
	printf("%d\n",a);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

4.关键字

 关键字:32个
	char float int long short double signed unsigned 
	continue break case default do else goto if switch while
	return void
	typedef union volatile auto static struct const enum extern register sizeof
	         

typedef:类型重命名

格式:typedef 原先类型(名字) 新定义类型(名字);
除非特殊需求,否则不建议
unsigned long long,打印是使用%uul

#if 0
typedef unsigned long long ull_t;
#include <stdio.h>
#include <windows.h>
int main(){
	unsigned long long x = 100;
	ull_t y = 200;
	printf("%llu\n",x);
	printf("%llu\n",y);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

5 初始化和赋值的区别

(1)初始化是开辟空间和放置数据内容在一起进行
只能进行一次
(2)赋值是先进行开辟空间,再将内容放置再对应的位置
可赋值多次

#if 0
#include <stdio.h>
#include <windows.h>
int main(){
	int x = 10;//初始化
	//int x = 0; ---error
	int y = 20;
	y = 40;//赋值
	y = 50;
	system("pause");
	return 0;
}
#endif

6 函数求两个数的最大值

#if 0 
#include <stdio.h>
#include <windows.h>

#pragma warning(disable:4996);

int MyMax(int _x,int _y){
	return _x>_y ? _x:_y;
}

int main(){
	int x = 0;
	int y = 0;
	int max = 0;
	printf("请输出两个数据:");
	scanf("%d%d",&x,&y);
    max = MyMax(x,y);
	printf("max:%d \n",max);
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

往期博客:
简单点-c-lesson1
简单点-c-lesson2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值