椋鸟C语言笔记#2

数据类型与变量

Featured image

萌新的学习笔记,写错了恳请斧正。

数据类型

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

下面介绍部分内置类型(更多的还没学)

1 - 字符型

可以存一个字符

signed 代表有正负号区别,unsigned 反之

signed 可以省略,unsigned 不行

对于字符类型,signed 和 unsigned 基本没有区别

(具体区别见 char 与 signed char, unsigned char 的区别_char signed unsigned char-CSDN 博客)

2 - 整型

短整型:

整型:

长整型:

更长整型 (C99 后):

可以存一个整数

(只考虑非负数的情况下一般 unsigned 的数据类型值域大一点)

(举个例子,short 从 - 32768~32767,而 unsigned short 从 0~65535)

3 - 浮点型

可以存一个小数

4 - 布尔类型

用以表示真假,有俩个取值 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;
}
它们在内存中的位置

内存分为堆区、栈区、静态区

全局变量放在内存的静态区

局部变量放在内存的栈区

堆区还没学到