c语言学习第三课—简单介绍数组与操作符

简介: c语言学习第三课—简单介绍数组与操作符

数组

数组-用来存储一组数据,是一组相同类型的元素集合。

数组定义    数据类型+数组名[数组大小] =数组元素;

cbf2fb030155413f80214cef7fe2c3b2.png例如:

int main()
{
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义一个整型数组,最多放10个数
  char arr[10] = "abcdefdhig";//定义一个字符数组
  //数组里存放的元素个数必须小于等于你所定义的大小,若小于,剩余数组元素的补充为0
  return 0;
}

数组下标

数组的里的元素下标代表他的位置,第一个从0开始,这里类似高中学的数列。这里可以用数组下边表示数组元素。

int main()
{
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
               // 0 1 2 3 4 5 6 7 8  9
  printf("%d\n", arr[7]);//打印8,第7的下标。
  //在数组中,我们可以从他的下标来访问c语言里的所有元素。
  //打印全部元素
  //输入数组元素
  int j = 0;
  while (j < 10)
  {
    scanf("%d ", &arr[j]);//重新输入的值保存在数组里
    j++;
  }
  int i = 0;
  while (i < 10)
  {
    printf("%d ", arr[i]);
    i++;
  }
  return 0;
}

操作符

c语言里提供了许多操作符,如图表示


4b14a38c3a4f424cb536a471c9eafc23.jpg

算术操作符

加减乘除与取余,加减乘是数学里的,这里不举例,说一下取余与处,%取余就是取两个数相除所得的余数。注意的是%操作符两边的数必须是整数,/除操作符,两个整形类型相处所得的一个数也是整形,故无小数。

int main()
{
printf("%d",15/2);//7   整形,故为7
printf("%d",15 % 2);//1   余数
//取余操作符两边必须为整数
return 0;
}

移位操作符

>>  <<  移动的是二进制位,向左移动,向右移动二进制序列。这里不做赘述。

  位操作符  

^(按位异或)     &(按位与)      |(按位或)          ~(取反)

在使用位和 移位操作符时需注意:

1.除了取反操作符是单目操作符外,其余都是双目操作符

2.位运算操作符所操作的操作数只能是整形或字符型的数据以及他们的变体

3.操作数的移位运算不改变数原来本身的值

它们的运算按规则是:先将两个操作数化为二进制数,然后再按位运算。

它们的运算规则如下图  

image.jpeg

~操作数的二进制位1变0 0变1;

|  按位或   两个操作数的二进制数一一对应,同假为假,一真为真,同真为真,所得到的二进制序列对应的十进制数为所求得的结果

&按位与   两个操作数的二进制数一一对应,同假为假,一假为假,同真为真,所得到的二进制序列对应的十进制数为所求得的结果

例如按位与:两个操作数的二进制数一一对应,相同为假(0),不同为真(1),所得到的二进制序列对应的十进制数为所求得的结果

int main()
{  
    int a=84; int b=59;
    printf("%d",a&b);//结果为16
return 0;
}

  01 010 100 //84的二进制数

  00 111 011 //59的二进制数

&

  00 010 000 //16的二进制数

且对于按位异或^,有这个特殊操作。

a^a=0,     a^~a=二进制数全为1  ~(a^a)=1

赋值操作符

int main()
{
  int a = 0;//初始化
  a = 100;//赋值
  a += 3;//等价a=a+3;
  a -= 10;//等价a=a-10;
}

一些单目操作符

+是双目操作符,3+5,左右两边有两个操作数,故单目操作符只有一个操作数

!操作符,真变假,假变真

c语言中,0表示假,非0表示真。用于条件的判断

int main()
{
  int flag=5;
  if (flag)//为真
  {
    printf("hehe");
  }
  if (!flag)//为假
  {
    printf("haha");
  }
  //int flag=0;
  //if (!flag)//为真
  //{
  //  printf("haha");
  //}
  return 0;
}

-  负值操作

int main()
{
    int a = 10;//int a=-10;
    a = -a;
    printf("%d", a);
    return 0;

sizeof  计算操作数类型长度  (所占空间的大小) 单位是字节

int main()
{
  int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
  printf("%d", sizeof(arr));//40
  printf("%d", sizeof(arr[0]));//4
  //用sizeof计算数组中的元素
  printf("%d", sizeof(arr) / sizeof(arr[0]));
}

注意

这里数组里共有10个整形数据,一个整型占空间大小为4个字节,一共40个

如何计算数组中的元素,这里的总单位字节大小除以一个元素大小,就是数组中的元素。

sizeof操作符,当数组名放在sizeof()中计算的所有元素所占空间大小。

字符数组同理

int main()
{
  char arr[7] = "abcdefg";
  printf("%d", sizeof(arr));//8
  printf("%d", sizeof(arr[0]));//1
  //这里的一个字符所占空间大小为一个字节
  //
  //这里也可以直接用函数strlen来计算
  printf("%d", strlen(arr));//7
}

注意

因为,sizeof计算的是算占空间大小,这里的‘\0’即字符串的结束标志,也当作是一个字符,转义字符,故这里的大小为7+1;而strlen只看字符的个数,以\0为结束,故为7个。

++操作符符

给原来的元素+1,这里区分一下前置++与后置++。

//后置++
int  main()
{
  int a = 10;
  int b = a++;//后置++。a先使用,在加1;
  printf("a=%d\n", a);//11,这里的a使用之后加1;
  printf("b=%d\n", b);//10,这里的b在a赋值时,先使用,先赋值,故b还是为10;
  //b=a++;可以理解为 int b=a;a=a+1;
  return 0;
}
//前置++
int main()
{
  int a = 10;
  int b = ++a;//前置++,先++,在使用
  printf("a=%d\n", a);//11,这里的a先加1;
  printf("b=%d\n", b);//11,这里的b在a赋值时,先加加变为11,再赋值,故b为11;
  //int b=++a;可以理解为 a++;int b=a;
}

--操作符同理

int main()
{
  int a = 10;
  int b = --a;
  printf("a=%d\n", a);//9
  printf("b=%d\n", b);//9
  int a = 10;
  int b = a--;
  printf("a=%d\n", a);//9
  printf("b=%d\n", b);//10
  return 0;
}

强制类型转换

也是一个单目操作符

int main()
{
  //int a=3.14   报警,类型不匹配
  int a = (int)3.14;//强制转换为整形 3
}

关系操作符

很简单

就是>= (大于等于)<=(小于等于) >(大于) < (小于)   ==(等于),这里用法注意一下==与=的区别,一个=是赋值操作。==判断两边是否一样,一样为真否则为假。

逻辑运算符

&&  || 逻辑与和逻辑或

&&逻辑与,a&&a就是a且a,两个必须同时满足才为真,a||a就是a或a,满足其中一个就为真。 这两个通常用于条件的判断。

int mian()
{
  int score1 = 0;
  int score2 = 0;
  scanf("%d %d", &score1, &score2);
  if (score1 >= 90 && score2 >=90)
  {
    printf("两成绩都大于等于90");
  }
  else if (score1 > 90 || score2 > 90)
  {
    printf("可能存在有一门小于九十的");
  }
  else
  {
    printf(" ")
  }
  return 0;
}

今日学习完毕,大家一起加油。

相关文章
|
30天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
35 10
|
29天前
|
存储 编译器 C语言
【c语言】数组
本文介绍了数组的基本概念及一维和二维数组的创建、初始化、使用方法及其在内存中的存储形式。一维数组通过下标访问元素,支持初始化和动态输入输出。二维数组则通过行和列的下标访问元素,同样支持初始化和动态输入输出。此外,还简要介绍了C99标准中的变长数组,允许在运行时根据变量创建数组,但不能初始化。
37 6
|
1月前
|
存储 人工智能 BI
C语言:数组的分类
C语言中的数组分为一维数组、多维数组和字符串数组。一维数组是最基本的形式,用于存储一系列相同类型的元素;多维数组则可以看作是一维数组的数组,常用于矩阵运算等场景;字符串数组则是以字符为元素的一维数组,专门用于处理文本数据。
|
1月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
1月前
|
存储 C语言
C语言:一维数组的不初始化、部分初始化、完全初始化的不同点
C语言中一维数组的初始化有三种情况:不初始化时,数组元素的值是随机的;部分初始化时,未指定的元素会被自动赋值为0;完全初始化时,所有元素都被赋予了初始值。
|
1月前
|
C语言 C++
保姆式教学C语言——数组
保姆式教学C语言——数组
17 0
保姆式教学C语言——数组
|
1月前
|
C语言
C语言数组
C语言数组
18 0
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
16 0
|
6月前
|
存储 安全 编译器
【 c 语言 】赋值操作符详解
【 c 语言 】赋值操作符详解
255 0
|
存储 算法 C语言
【C语言初阶】带你轻松玩转所有常用操作符(2) ——赋值操作符,单目操作符
【C语言初阶】带你轻松玩转所有常用操作符(2) ——赋值操作符,单目操作符
130 0