C语言0基础入门游戏辅助开发—学习笔记02

C语言0基础入门游戏辅助开发—学习笔记02

PS:这里仅作为本人学习过程中的随笔。

数据类型、sizeof运算符

数据类型

数据类型是在关键字内的,或者说关键字包含数据类型。

数据类型有哪些

image-20240308175551501

程序中的代码和数据都是以二进制的形式存储的,

对计算机系统和硬件而言,数据类型的概念不存在,

这个东西只是给程序员看的,

程序员决定使用的数据类型是什么。

数据类型的不同,会影响:

1.占用空间的大小

2.数据的存储形式

3.合理的表数范围

4.可参与的运算种类

常见数据类型占用内存空间大小:

  • int——基本整型,C标准为规定,系统相关

    在目前大多数系统上占4个字节

  • short int,简写为short

    短整型,2字节

  • long int,简写为long

    长整型,4字节

  • unsigned——无符号整型(正整数和0)

    无符号(没有正负数之分)

    用来修饰int、short、long

  • float

    单精度实型,4个字节

  • double

    双精度实型,8个字节

  • long double

    长双精度实型,IEEE规定10字节,系统相关

    VC++中占8个字节

  • char

    字符型,1字节

常见数据类型表数范围

数据类型 占内存的字节数 下限值 上限值
char 1 -128 127
unsigned char 1 0 255
short int 2 -32768 32767
unsigned short int 2 0 65535
unsigned int 4 0 4294967295
int 4 -2147483648 2147483647
unsigned long int 4 0 4294967295
long int 4 -214783648 2147483647
float 4 -3.14*10^-38 3.4*10^38
double 8 -1.7*10^-308 1.7*10^308
long double 8 -1.7*10^-308 1.7*10^308

计算占用内存空间的运算符

语法形式 运算结果
sizeof(类型) 类型占用的内存字节数
sizeof(变量或表达式) 变量或表达式所属类型占的内存字节数
main()
{
    int c = 8;
    
    int num = sizeof(int);
    
    int num = sizeof(c);
}

常量:宏常量、const常量

变量:在编译过程中,以及在内存数据集被调用的过程中,可以变动的量

常量:在编程过程中不允许变动的量,在内存中可以变动的量。(可以通过修改内存地址的数据,间接修改常量的值)。

宏常量(Macro Constant)

用一个表示符号来表示的常量。

宏定义

#define 标识符 字符串

编译预处理命令:在源程序编译之前,先对程序中的编译预处理命令进行处理然后将处理的结果和源程序一起进行编译,以得到目标代码。

例子:宏定义的例子,去定义一个宏常量

#define PI 3.14

意思就是将3.14放入PI中,其中#define起的作用就是替换

替换是从程序编译的那一刻之前进行的,是预先处理的,所以#define又叫编译预处理指令。

就是把代码里所有的3.14,全部换成PI,从你写代码开始,然后到程序生成之前,

程序生成之后,它就消失了。

特点:#define 宏名 常量

其中,常量不区分数据类型,且宏名一般全大写。

1.当调试查看运算结果时,发现无法查看PI,因为调试的时候已经发生了替换。

2.因为没有数据类型,所以运算中容易发生意想不到的错误,直接替换,不够严谨,所以需要一种有数据类型的常量。

宏常量是不存在内存地址的,它是没有内存数据的。


const 常量

编程中不可以修改常量数据;

取地址运算符(&):

怎么找到内存的值,使用取地址运算符:

int a = 30;

int address = &a;

我们是能够强制修改内存中的数据的,即使是使用的const的常量。

image-20240308180420782

image-20240308180425264


算术运算

C语言运算符

运算符(Operator):简单理解就是能够进行运算的符号,实现数据或者各种量的运算。

表达式(Expreesion):简单理解就是一个式子,和数学式子一样。

// 算术表达式:
a + b
//操作数 + 操作数

加减不多赘述。

除法(Division):

a / b

11 / 5 = 2
//整数除法(integer Division)

11.0 / 5 = 2.2
//浮点数除法(Floating Division)

总结:都是整数,自动去除余数取整;

如果有一个是小数,那么结果就会是小数。

小插曲:从“double” 到 “float” 截断

在C语言中,如果不指定数据类型,那么小数常量会被认为是double类型的

float a = 11.0 / 5
//会报错 11.0是double类型 5 是int类型 精度不匹配
//解决办法:11/0f  或者将float换成double

求余(Modulus)——也称为a对b取模

a % b

操作数必须是整数,返回a与b相除之后的余数。

运算的优先级

和数学差不多,先算乘除,后算加减,括号可以改变运算顺序。

posted @ 2024-03-08 18:09  wind风语  阅读(13)  评论(0编辑  收藏  举报