2 min to read
椋鸟C语言笔记#2
数据类型与变量
萌新的学习笔记,写错了恳请斧正。
数据类型
数据类型分为内置类型和自定义类型
下面介绍部分内置类型(更多的还没学)
- 方括号内的内容可省略
1 - 字符型
- [signed] char
- unsigned char
可以存一个字符
signed 代表有正负号区别,unsigned 反之
signed 可以省略,unsigned 不行
对于字符类型,signed 和 unsigned 基本没有区别
(具体区别见 char 与 signed char, unsigned char 的区别_char signed unsigned char-CSDN 博客)
2 - 整型
短整型:
- [signed] short [int]
- unsigned short [int]
整型:
- [signed] int
- unsigned [int]
长整型:
- [signed] long [int]
- unsigned long [int]
更长整型 (C99 后):
- [signed] long long [int]
- unsigned long long [int]
可以存一个整数
(只考虑非负数的情况下一般 unsigned 的数据类型值域大一点)
(举个例子,short 从 - 32768~32767,而 unsigned short 从 0~65535)
3 - 浮点型
- float
- double
- long double
可以存一个小数
4 - 布尔类型
- _Bool
用以表示真假,有俩个取值 true 和 false,用以代替 1 和 0
使用布尔类型需要包含头文件 stdbool.h
各种数据类型的长度
可以用关键字(也是操作符)sizeof 来计算各类型数据的长度
sizeof 输出单位是字节,其操作数可以是类型、变量、表达式
int a;
printf("%zd\n", sizeof(a));
printf("%zd\n", sizeof a);
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(a + a));
sizeof 的操作数如果不是类型,可以省略掉括号
sizeof 后面的表达式不会真正参与计算,只是求数据长
因为 sizeof 返回的类型在不同的系统中,可能是 unsigned int、unsigned long 甚至 unsigned long long,可能会导致程序换个电脑就出问题。所以 C 语言给 sizeof 的返回值单独设置了一个类型叫 size_t,可以自己根据系统情况返回类型。而这时,其所对应的占位符应为 %zd
具体数据长度的规定被写在头文件 limits.h 和 float.h 中
变量
变量,顾名思义,能变的量,和常量相对
变量是可以我们自己创建的,格式如下:
datatype name
//datatype用任意数据类型的名字替代
//name就是我们自己随便起的变量名,只要不是关键字就行
//比方说:
int a;
如果变量在创建时就直接给一个值进去,就叫初始化:
int a = 1;
char b = 'z';
double c = 3.14;
变量分为局部变量和全局变量:
全局变量
全局变量就是在大括号外面定义的变量,在整个工程里都能用。
哪怕是同一个工程的不同源文件,也可以申请调用。
局部变量
局部变量就是在某个大括号内定义的变量,也只能在这个大括号内使用
当它们起冲突时…
当局部变量和全局变量一致,函数优先使用其所在大括号内的可用的局部变量
比如说:
#include <stdio.h>
int a = 1; //全局变量
int main()
{
{
int a = 114514; //printf不可用的局部变量
}
int a = 0; //printf可用的局部变量
printf("%d",a); //输出0
return 0;
}
它们在内存中的位置
内存分为堆区、栈区、静态区
全局变量放在内存的静态区
局部变量放在内存的栈区
堆区还没学到
Comments