c语言基础知识2

这篇我们来讲讲c语言中的数据类型和变量,也是我们以后要经常接触到的知识点!

1. 数据类型介绍

    C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。
    使用整型(int)类型来描述整数,使用字符(char)类型来描述字符,使用浮点(float)型类型来描述小数。
    所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。下面是我画的一个关于数据类型的框架图:
1.1 字符型
char //character
[ signed ] char // 有符号的
unsigned char //无 符号的
1.2 整型
// 短整型
short [ int ]
[ signed ] short [ int ]
unsigned short [ int ]
// 整型
int
[ signed ] int
unsigned int
// ⻓整型
long [ int ]
[ signed ] long [ int ]
unsigned long [ int ]
long long [ int ]
[ signed ] long long [ int ]
unsigned long long [ int ]
1.3 浮点型
float
double
long double
1.4 布尔类型
C 语⾔原来并没有为布尔值单独设置⼀个类型,而是使用整数 0 表示假 ,非零值表示真。
C99 中也引入了 布尔类型 ,是专门表示真假的。
布尔类型的使⽤得包含头⽂件 <stdbool.h>
布尔类型变量的取值是: true或者false
我们看看这些类型的长度:
在上面我们可以看到几个不是很熟悉的比如signed和unsigned,接下来我就讲讲我的理解吧

2.signed和unsigned的区别

C 语言使用  signed unsigned 关键字修饰字符型和整型类型的。
signed 关键字,表示⼀个类型带有正负号,包含负值;
unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int
由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。

3.变量

变量在c语言中非常常见,它的格式就是数据类型+变量名;

说起来变量,就不得不提到它的两个分类啦,也是当时学了指针之后很头疼的一个问题对我来说。

3.1 变量的分类
全局变量:在大括号外部定义的变量就是全局变量
全局变量的使用范围更⼴,整个工程中想使用,都是有办法使用的。
局部变量:在大括号内部定义的变量就是局部变量
局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的。
那全局变量和局部变量的变量名相同呢?
那就是 局部变量优先啦!
3.2全局变量和局部变量在内存中存储在哪里呢?
⼀般我们在学习C/C++语⾔的时候,我们会关注
内存中的三个区域:栈区、堆区、静态区。
1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是⽤来动态内存管理的

4. 算术操作符:+、-、*、/、%

在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符也称运算符。
分别是: + - * / % ,这些操作符都是双目操作符。
4.1 + -
+ - 用 来完成加法和减法。
+ - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双目操作符。
4.2 * 和 /
运算符 * ⽤来完成乘法。
运算符 / ⽤来完成除法。
注意! 除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。除号两端有一个为浮点数则运算结果就是浮点数。
4.3  %
运算符 % 表示 求模(余)运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。负数求模的规则是结果的正负号由第一个预算数的正负号决定。

5. 单目操作符:++、--、+、-

在我们日常写代码过程中会经常看到这类单目操作符,++是一种自增的操作符,又分为前置++和后置++,--是⼀种自减的操作符,也分为前置--和后置--.有很多编程小白不是很清楚a++和++a的区别,下面我就来给大家用代码讲解一下:

上图就是++a也称前置++,它运行的时候就是先对a进行+1的操作然后再赋值给b所以最后a和b的值都是6,牢记:先+1,后计算

这次就是a++了也称后置++,它运行的时候就是先将a的值赋值给b后进行+1,所以不同上面++a的结果,牢记:先计算,后+1

--a和a--的计算同上。

6. 占位符

scanf() 常用的占位符如下,与 printf() 的占位符基本⼀致。
%c :字符。
%d :整数。
%f float 类型浮点数。
%lf double 类型浮点数。
%Lf long double 类型浮点数。
%s :字符串。
%[] :在方括号中指定⼀组匹配的字符(比如  %[0-9] ),遇到不在集合之中的字符,匹配将会
停⽌。
上面所有占位符之中, 除了 %c 以外 ,都会自动忽略起首的空⽩字符。 %c 不忽略空白字符,总是返回当前第⼀个字符,⽆论该字符是否为空格。
如果要强制跳过字符前的空白字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表示跳过零个或多个空白字符。
下面要特别说⼀下占位符 %s ,它其实不能简单地等同于字符串。它的规则是, 从当前第⼀个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。
因为 %s 不会包含空白字符,所以无法用来读取多个单词,除非多个 %s ⼀起使用。这也意味着,
scanf() 不适合读取可能包含空格的字符串,比如书名或歌曲名。另外, scanf() 遇到 %s 占位
符,会在字符串变量末尾存储⼀个 空字符 \0
scanf() 将字符串读入字符数组时,不会检测字符串是否超过了数组长度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防止这种情况,使用%s 占位符时,应该指定读入字符串的最长长度,即写成 %[m]s ,其中的 [m] 是⼀个整数,表示读取字符串的最大长度,后面的字符将被丢弃。
下次我们说分支和循环语句!

相关推荐

  1. c语言基础知识

    2024-06-12 10:26:03       38 阅读
  2. C语言基础知识笔记

    2024-06-12 10:26:03       20 阅读
  3. c语言指针基础知识

    2024-06-12 10:26:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 10:26:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 10:26:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 10:26:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 10:26:03       20 阅读

热门阅读

  1. #头歌#机器学习PCA算法流程

    2024-06-12 10:26:03       7 阅读
  2. 点击原生button,a标签,会出现鼠标按下去有蓝色

    2024-06-12 10:26:03       8 阅读
  3. Mysql

    2024-06-12 10:26:03       10 阅读
  4. Zookeeper:启动占用8080端口

    2024-06-12 10:26:03       6 阅读
  5. 【Ant-Design-Vue动态表头并填充数据】

    2024-06-12 10:26:03       9 阅读
  6. 图像处理中的图像分割

    2024-06-12 10:26:03       7 阅读