要不点进来看看:C语言基础——C语言数据类型和变量

目录

前言: 

1.数据类型

1.1介绍:

1.2内置类型: 

signed和unsigned :

字符型:

整型:

浮点型:

布尔类型:

​​​​

1.3数据类型的长度:

1.4sizeof操作符:

 sizeof()的处理:

数据类型长度

2. 变量

2.1变量的创建:

 2.2变量的分类:

3.操作符  

3.1算数操作符:

+ 和 -

*和/

 %

3.2赋值操作符:=

 连续赋值

复合赋值

3.3 单目操作符:

++

前置++:

后置++:

前置--:

 后置--:

+ 和 -:


前言: 

 各位,咱又见面了,在经历前两次的学习后,相信大家已经对C语言有了一定简单的了解,咱就直奔主题开始今天的学习,通往山顶的道路崎岖蜿蜒,但我相信那些不能击溃我的只能使我更加强大。

1.数据类型

1.1介绍:

我们在C语言中运用不同的数据类型来描述各种数据,整数用整型类型,字符用字符型,小数用浮点型。把具有相同特征的数据进行分类,编译器跟据对应的数据类型对数据进行相应的操作。

 数据类型分为内置类型自定义类型

1.2内置类型: 

以下是一些内置类型的数据,关于数据类型的数值范围和和占位这里就不展开了。

  • signed和unsigned :

咱在正式的学习内置类型的数据类型之前,先了解一下 signedunsigned

在C语言中我们用 signed unsigned 关键字用来修饰字符型整型类型。

signed,它表示一个类型带有正负号,包含负值。

unsigned,它表示该类型不带有正负号,只能显示正整数和零。

  • 字符型:

用于存放字符。

1.char   //character
2.[signed] char   //有符号的
3.unsigned char   // 无符号的

 注意:C语言规定 char 类型默认是否带有正负号,由当前的系统决定,这也就是说,char 可能是signed char 也可能是 unsigned char,这里和下面的 int 是有区别的。

  • 整型:

用于定义一个整型变量。

1.//短整型
2.short[int]
3.[signed] short [int]
4.unsigned short [int]
5.//整型
6.int
7.[signed] int  
8.unsigned int
9//长整型
10.longg [int]
11.[signed] long [int]
12.unsigned long [int]
13.//更长整型(c99中引入)
14.longg [int]
15.[signed] long long [int]
16.unsigned long long [int]

 这个 int 类型的,它默认是带有正负号的,既 int 等于 signed int ,但是一般情况这个 signed 但是省略的,如果咱在它前面加上一个 unsigned ,这个时候它就只能显示正整数和零了。

  • 浮点型:

单精度浮点型 float(小数点后6位)和双精度浮点型 double(小数点后15位)都是用来存放小数的,区别在于双精度浮点型的 double 精确度更高。

1.float
2.double
3.long double
  • 布尔类型:

C语言中并未对布尔值专门设置一个类型,而用非0表示真,0表示假。

布尔类型的使用得包含头文件 <stdbool.h>

布尔类型变量的取值是:true flse

1._Bool

演示:

1 _Bool flag = true;
2 if(flag)
3 printf("I'm the best!\n");

​​​​

1.3数据类型的长度:

每个数据类型都有自己的长度,使用不同的数据类型,能创建长度不同的变量,变量长度不同,存储的数据范围也有所差异。

1.4sizeof操作符:

我们用 sizeof 来计算某个数据类型或某个变量在内存中占用的字节数(byte)。sizeof 的操作数如果不是数据类型或变量而是表达式的时候,括号可以省略。

1 sizeof(数据类型/变量)
2 sizeof 表达式
  •  sizeof()的处理:

在C语言中 sizeof()的处理是在编译阶段完成的,且 sizeof 中的表达式不计算。 

  • 数据类型长度

2. 变量

2.1变量的创建:

了解完数据类型后咱在接着学习变量,咱学这数据类型有个啥用勒?当然是用来创建变量啦。

那啥又是变量嘞?C语言里头,把经常变化的值称作变量,不变的值称为常量

代码例子如下:

data_type name;
    |      |
    |      |
 数据类型   变量名
int age;//整型变量
char ch;//字符变量
double weight;//浮点型变量

变量在创建的时候给一个初始值,就叫初始化

int age = 18;
char ch = 'x';
double weight = 48.0;
unsigned int height = 100;

 2.2变量的分类:

  •  全局变量:大括号外部定义的变量就是全局变量;全局变量使用的范围更广,整个工程中想使用都是有办法的。
  • 局部变量:在大括号内部定义的变量就是局部变量;局部变量的使用只能在自己规定的局部范围内使用。
#include<stdio.h>

int n = 2023;//全局变量

int main()
{
  int n = 2018;//局部变量
  printf("%d\n",n);
  printf("%d\n",n);
  return 0;
}

如果局部变量和全局变量的名字相同则局部变量优先使用。

3.操作符  

3.1算数操作符:

咱写代码的过程一定会涉及到计算,那为了方便而提供的的一系列操作符叫:算数操作符。有:+  -   *  /  % ,这些操作符也被叫做双目操作符。

  • + 和 -

+ -用来完成加法和减法。

+ - 都是由两个操作数的,就是位于符号两端的数字,所以也被叫做双目操作符

#include<stdio.h>
int main()
{
  int x = 4 + 22;
  int y = 61 - 23;
  printf("%d\n",x);
  printf("%d\n",y);
  return 0;
}
  • *和/

* / 分别用来完成乘法和除法。

注意:如果除法两端是整数,那么结果必定会是整数。

#include<stdio.h>
int main()
{
  int a = 4;
  float b = 4;
  printf("%d",a*a);//输出16
  printf("%d",a/3);//输出1
  printf("%f",b/3);//输出1.000000
  return 0;
}

如上所示,尽管b的数据类型是 float(浮点数),但是4/3的到的结果是1.000000,而不是1.250000。原因就是在C语言里的整数除法就是整除,只会返回整数部分,丢弃小数部分。

倘若非要小数是,也不是不行,那这两个小数里边至少的有一个浮点数,这时C语言才会进行浮点数除法。

如下所示:

#include <stdio.h>
int main()
{
  float x = 4.0/3;
  printf("%f\n",x);//输出1.500000
  return 0;
}
  •  %

% 这个运算符是求模运算,即返回这两个整数相除的余值。这个不用于浮点数噢。

#include<stdio.h>
int main()
{
  int a = 4%3;//余数为1
  return 0;
}

还有点值得注意的是负数求模的规则,结果的正负号由第一个运算数的正负号决定。

#include<stidio.h>
int main()
{
  printf("%d",4/-3);//1
  ptintf("%d",-4/3);//-1
  printf("%d",-4/-3);//-1
  return 0;
}

3.2赋值操作符:=

在变量创建的时候给一个初始值叫初始化,在变量创建后,再给一个值,这就叫赋值

int a = 100;//初始化
a = 200;//赋值,这里使用的就是赋值操作符

赋值操作符 = 是一个随时可以给变量赋值的操作符。

  •  连续赋值

赋值操作也可以连续赋值,如:

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右到左依次赋值。

虽然能行,但不推荐,拆开写能更加的方便的观察代码的执行细节。

int a = 3;
int b = 5;
int c = 0;
b = a+3;
c = b;

 对比之下,在调试时,每一次赋值的细节都是可以很方便观察的。

  • 复合赋值

在写代码时,我们有时会对一个数进行自增,自减的操作,就比如:

int a = 10;
a = a+3;
a = a-2;

这样代码C语言给提供了更加方便的写法:

int a = 10;
a += 3;
a -= 2;

C语言中提供了复合赋值符,方便我们编写代码,部分常用的如下:

+=   --
*=   /=   %=

3.3 单目操作符:

有双目操作符就必定有单目操作符。++,--,+(正),-(负)就是单目操作符一次只能操作一个数。

  • ++

++ 是一种自增的操作符,又分为前置 ++ 后置 ++

  • 前置++:
     

int a = 10;
int b = ++a;//++的操作数是a,是放在a的前面的,就是前置++
printf("a = %d b = %d\n",a , b);

计算口诀:先 +1,再使用;

 看到这里的同学,如果是新手,建议去写一遍代码,便于理解口诀。

a 初始值为10,先 +1,后 a 为11,再使用即赋值给 bb 就为11,所以计算计数后,a b 都是11,相当于这样的代码:

int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a,b); 
  • 后置++:

int a = 10;
int b = a++;
printf("a=%d b=%d\n",a , b);

计算口诀:先使用,后+1。

a 初始值是10,先使用,就是先赋值给 b,b 即为10,而后 a 再+1,所以结束后 a 为11,b 为10。相当于这样的代码:

int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a,b);

在详细的解释完前置 ++后置 ++ 后,对于 前置--后置-- 的学习也不外如是。

  • 前置--:

类比前置 ++,咱把加一换为减一即可。

计算口诀:先-1,后使用

int a = 10;
int b = --a;//--的操作数是a,a就先-1即9,然后再赋值给b
printf("a=%d b=%d\n",a ,b);//输出的结果是:9 9
  •  后置--:

类比后置 ++,咱把加一换为减一即可。

计算口诀:先使用,后-1

int a = 10;
int b = a--;//--的操作数是a,a就先赋值给b即b=a=10,然后再-1
printf("a=%d b=%d\n",a ,b);//输出的结果是:9 100
  • + 和 -:

这里的 + 是正号,- 是负号,都是单目操作符。

这个 + 对正负值没有影响,完全可以省略,但写了也不会有错。

这个 - 就是用来改变一个值的正负号,负号的前面加上 - 就会变成正数,正数前面加上 - 就变成负数。

int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c);//这里的b和c都是-10

int a = -10;
int b = -a;
printf("b=%d\n",b);//这里的b就是10

今天就到这里啦!

  • 41
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值