栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

1-3-初识C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1-3-初识C语言

目录

1. 数组

1.1 定义数组

1.2 数组的下标

1.3 数组的使用

2. 操作符

算数操作符

/ 操作符

% 操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

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

逗号表达式

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

结语


1. 数组

要存储 1-10 的数字,怎么存储?

C语言中给出了数组的定义:一组相同类型元素的集合。

1.1 定义数组
#include 
int main()
{
	int a = 1; int b = 2; int c = 3; int d = 4;  //当定义多组相同类型的变量时,可以选择使用定义数组。
	int arr[10] = { 1,2,3,4};  //通过数组,可以定义一组相同类型的元素。
	char ch[5] = { 0 };  //不完全初始化,剩余会默认初始化为0.
	char ch1[] = { 'a','b','c','d' };  //自动开辟所需要的空间。
	char ch2[] = { 0 };  //只会开辟一个空间。
	return 0;
}

1.2 数组的下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

数组可以通过下标来访问的。

 数组内容可以通过下标访问

#include 
int main()
{
	int arr[10] = { 0 };
	printf("%dn", arr[8]);
	printf("%dn",arr[10]);  //由于下标范围是0-9,所以arr[10]属于越界访问行为
	return 0;
}
//--------------
//编译器编译结果为
//0
//- 858993460

越界访问可能会导致程序崩溃,程序出错等严重后果。

1.3 数组的使用

数组的输入和输出

#include 
int main()
{
	int i = 0;
	int arr[10] = { 0 };
	//输入10个值给数组
	while (i < 10)
	{
		scanf("%d", &arr[i]);
		i++;
	}
	i = 0;
	//输出10个值
	while (i < 10)
	{
		printf("%dn", arr[i]);
		i++;
	}
	return 0;
}

2. 操作符

算数操作符
+        -        *        /        %(取余)

算数操作符中 +  -  *  与平常运算相同,所以不做多解释,重点解释 / 和 % 操作符。

/ 操作符
#include 
int main()
{
	int a = 7 / 2;
	printf("%dn", a);  //打印结果为3
	float b = 7 / 2;
	printf("%fn", b);  //打印结果为3.000000
	float c = 7.0 / 2;
	printf("%fn", c);  //打印结果为3.500000
	float d = 7.0 / 2.0;
	printf("%fn", d);  //打印结果为3.500000
	return 0;
}

除号两端操作数如果都是整数,执行整数的除法,至少有一个操作数为浮点数,执行的才是浮点数除法

% 操作符
#include 
int main()
{
	int a = 7 % 2;
	printf("%d", a);  //打印结果为 1
	int b = 7 % 2.0;  //加上此行代码会报错,% 操作符的两个操作数必须是整数。
	return 0;
}

移位操作符

>>(右移操作符)        <<(左移操作符)

位操作符

&(按位与)        ^(按位异或)        |(按位或)

移位操作符和位操作符以后讲解。

赋值操作符

=     +=     -=     *=     /=     %=     >>=     <<=     &=     |=     ^=

由于赋值操作符作用类似,不再依次举例。

#include 
int main()
{
	int a = 10;  //创建变量并初始化
	a = 20;  //进行赋值操作
	a += 5;  //等价于a = a + 5
	printf("%dn", a);  //打印结果为25
	a *= 5;  //等价于a = a * 5
	printf("%dn", a);  //打印结果为125
    //剩余复合操作符与+= *= 操作符用法类似,不做太多解释。
	return 0;
}

单目操作符

例如:2+3,2为加操作符的左操作数,3为加操作符的右操作数,所以加操作符是一个双目操作符。

所以单目操作符是只有一个操作数的操作符。

单目操作符

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

!操作符

#include 
int main()
{
	int a = 10;
	if (a)  //非零为真
	{
		printf("11");  //打印为11
	}
	if (!a)  //!操作符使得真变假,假变真。
	{
		printf("22");  //不进行打印
	}
	return 0;
}

+ - 操作符

+ - 操作符改变值的正负

#include 
int main()
{
	int a = 10;
	printf("%dn", +a);
	printf("%dn", -a);
	return 0;
}
//-----------------
//编译器结果为
//10
//- 10

sizeof 操作符

计算操作数所占空间的类型大小,单位字节。

#include 
int main()
{
	int a = 10;
	char ch = 'a';
	int arr[10] = { 0 };
	printf("%dn", sizeof(a));
	printf("%dn", sizeof(ch));
	printf("%dn", sizeof(arr));
	return 0;
}
//---------------------
//编译器运行结果为
//4
//1
//40

计算数组元素个数

#include 
int main()
{
	int arr[10] = { 0 };
	int size = sizeof(arr) / sizeof(arr[0]);  //数组元素所占的总空间/单个元素所占空间=元素个数
	printf("%d", size);
	return 0;
}
------------
编译结果为
10

++ -- 操作符

#include 
int main()
{
	int a = 10;
	int b = ++a;  //前置++,先++,后使用(赋值)
	printf("a=%d  b=%dn", a, b);  //打印为a=11  b=11
	int c = 10;
	int d = a++;  //后置++,先使用(赋值),后++。
	printf("c=%d d=%d", c, d);  //打印为c=10 d=11
	return 0;
}
#include 
int main()
{
	int a = 10;
	int b = --a;  //前置--,先--,后使用(赋值)
	printf("a=%d  b=%dn", a, b);  //打印为a=9  b=9
	int c = 10;
	int d = a--;  //后置--,先使用(赋值),后--。
	printf("c=%d d=%d", c, d);  //打印为c=10 d=9
	return 0;
}

(类型)  强制类型转换

#include 
int main()
{
	int a = 3.2;  //double类型转化为int,可能丢失数据。
	int b = (int)3.14;  //进行强制类型转换。
	printf("%d", b);  //打印结果为3,丢失数据。
	return 0;
}

关系操作符

>(大于)   >=(大于等于)   <(小于)   <=(小于等于)   !=(不等于)   ==(等于)

#include 
int main()
{
	int a = 3;
	int b = 5;
	if (a != b)
	{
		printf("haha");  //打印haha
	}
	if (a == b)
	{
		printf("hehe");  //不打印
	}
	return 0;
}

逻辑操作符

&&(逻辑与)        ||(逻辑或)

#include 
int main()
{
	int a = 3;
	int b = 0;
	if (a && b)  //a并且b为真时,为真
	{
		printf("hahan");
	}
	int c = a && b;
	printf("%dn", c);
	if (a || b)  //a或b,一个为真时,为真
	{
		printf("hehe");
	}
	return 0;
}

a&&b 当a、b同时为真时,整体为真,一个为假时,整体为假。(一假为假)

a||b 当a、b一个为真时,整体为真,a、b同时为假时,整体为假。(一真为真)

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

exp1 ? exp2 :exp3

#include 
int main()
{
	int a = 10;
	int b = 0;
	if (a > 5)
	{
		b = 3;
	}
	else
	{
		b = -3;
	}
	return 0;
}

上述代码等价于b = (a > 5 ? 3 : -3);

当a大于5成立,则3为整个表达式的结果,否则-3为整个表达式的结果。

逗号表达式

exp1 , exp2 , exp3 ......expN

#include 
int main()
{
	int a = 3;
	int b = 5;
	int c = 0;
	int d = (a += 2, b = b - c + a, c = a + b);
	printf("%dn", d);  //打印为15
	printf("a=%d b=%d c=%d", a, b, c);  //打印为a=5 b=10 c=15
	return 0;
}

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

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

下标引用

[ ]  (下标引用操作符)

#include
int main()
{
    int arr[10] = { 0 };
    arr[4] = 5;
    printf("%d", arr[4]);  //打印为5
    return 0;
}

数组建立和访问时出现的方括号即为下标引用操作符。

函数调用

( )   (函数调用操作符)

#include 
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	int c = Add(2, 3);
	printf("%d", c);
	return 0;
}

Add函数后的圆括号,main函数,printf函数后的圆括号即为函数调用操作符。

结构成员

结构成员涉及结构体,暂时不讲。

结语

好了,今天的初始C语言先分享到这里,希望我的博客能对大家有帮助。如果大家觉得菜菜写的还可以的话,请点赞+收藏哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号