C语言——基础知识——预处理,常量定义,数据类型

2021-02-18    分类: 网站建设

数据类型,预处理,常量的定义,变量及运算符.

----------------------------------------------------------------------------------------------------

C语言语法体系: 基本所有高级语言都可以这样划分.

1.数据类型 :

1.基本数据类型 : 整型,字符型,浮点型(float,double).

2.数组类型 : 一维数组(数组与字符串),二维数组,多维数组.

3.指针类型.

4.结构体类型.

5.共用体类型.

6.void空类型.

7.枚举型.

2.运算符与表达式.

3.C语言程序结构.

1.预处理 : 预定义符号,宏定义,文件包含,条件编译.

2.函数 : 函数的定义,函数的申明,函数的调用,函数特殊参数的传递,标准I/O.

3.控制语句 : 条件判断语句,循环语句,无条件跳转语句,转向语句.

----------------------------------------------------------------------------------------------

一、数据类型:

1.基本数据类型:

整型: int unsigned int : 数据长度4字节.

short unsigned short : 数据长度2字节.

long unsigned long : 数据长度4字节.

编程中表示方法: 8进制表示(0****),十进制表示(****),十六进制表示(0x********).

字符型: char : 数据长度1字节.

unsigned char : 数据长度1字节.

编程中表示方法: ASCII码(十进制整型数)表示,单个字符表示'a'.

浮点型: float : 数据长度4字节,6~7位有效数字(十进制).

double : 数据长度8字节,15~16位有效数字(十进制).

long double : 数据长度8字节,18~19位有效数字(十进制).

有效数字 : 非零数位开始的数位的个数.

编程中表示方法: 十进制表示,指数形式表示 : <十进制数>E(e)<指数>.比如2.38743E3 = 2387.43.

2.其它数据类型:

1.数组 : 数组就是同种数据类型数据的一个集合.数组中的元素(数据)在内存中是按顺序存储的.

2.指针 : 存储设备中每一个字节的存储空间都有一个地址,这个地址C语言中我们称之为指针.指针变量就是用于存储指针的变量.

3.结构体: 结构体用于保存多种数据类型的数据.一个结构体中可以包含多种数据类型的变量,这些变量我们称之为结构体成员.

4.共用体: 共用体与结构体几乎一模一样,区别在于结构体的大小由结构体成员的数据长度和决定.而共用体的大小由共用体中大数据长度的成员的数据长度决定.

5.void型: void可以表示"空",也就是没有,比如void test(){}就表示函数没有返回值.

void也可以表示任意数据类型,比如void a;就表示变量a的数据类型没有定义,可以根据需要进行数据传入.

6.枚举类型: 不做介绍.

3.volatile类型修饰符:

volatile作为关键字,确保指令不会因为编译器的优化而省略,也就是防止编译器对相应代码进行优化删除.

例如 : int a[3];

a[0] = 1;

a[0] = 2;

a[0] = 3;

这段代码在机器中表示不同的操作,会依次执行.但编译器会将上面4条语句优化为 : int a[3];

a[0] = 3;

这样就省略中间两条代码.而键入volatile(volatile int a[3];)就能避免编译器的优化而依次执行所有语句.

4.数据类型强制转换:

数据类型强制转换就是将一种数据类型转换为另外一种数据类型.

转换方法: (强转数据类型)<变量名>.

c语言中,float型数据在进行运算时是自动转换为double型数据进行处理的.

比如: int a = 3;

printf("%f",(float)a);

----------------------------------------------------------------------------------------------


二、"字"与"字节序":

1."字和"字长":

能够由计算机一次完成处理的数据称之为字,不同CPU体系结构的字长会有所区别.现在通用的处理器(32位)字长是4字节(32bit).对于64位处理器而言,它的字长就是8字节(64bit).我们不要将"字长"与"数据长度"混淆,更不要与"字节"混淆.

2.字节序:

字节序是数据在内存中的存储方式.是一个字中,各个字节在内存中存放的顺序.

1.大端模式: 数据的高字节存储在低地址中,低字节存储在高地址中.

2.小端模式: 数据的高字节存储在高地址中,低字节存储在低地址中.

比如对于多字节数据0x4567ABCD

----------------- -----------------

地址 数据 地址 数据

0x0000000C CD 0x0000000C 45

0x00000008 AB 0x00000008 67

0x00000004 67 0x00000004 AB

0x00000000 45 0x00000000 CD

大端模式 小端模式

预处理:

预处理是编译前所做的工作.编译前,编译器自动调用预处理程序对源码中'#'开头的预处理部分进行处理,处理完毕之后,进入源码的编译阶段.

1.预定义符号:

常用的预定义符号: __FILE__ : 编译的源文件名.

__FUNCTION__ : 当前所在函数的函数名.

__DATE__ : 编译日期.

__TIME__ : 编译时间.

2.宏定义: 自定义一个宏(要符合标识符的命名规则),用于表示任意数据或者表达式.

无参宏定义: #define 宏名 宏替换

比如: #define A 35 //A就代表整型数据35.

#define TEST "abddgdsfdlfj" //TEST就代表"abddgdsfdlfj"

#define TEST abddgdsfdlfj //TEST就代表abddgdsfdlfj

带参宏定义: #define 宏名(参数表) 宏替换

比如: #define M(a,b) a+b-2

K = M(1,2) + 4;

---> K = (1 + 2) - 3 + 4

3.文件包含:

#include <name.h> //包含系统头文件.

#include "name.h" //包含自定义头文件.

文件包含允许嵌套,即在一个被包含文件中可以包含其它文件.

4.条件编译: 根据不同的条件编译不同代码段.

#ifdef 宏名 //如果定义了宏"宏名",则编译代码段. #ifndef 宏名 //定义了宏"宏名",则编译代码段

代码段; 代码段;

#endif #endif

#ifdef 宏名 //如果定义了宏"宏名",则编译代码段1,否则编译代码段2;

代码段1;

#else

代码段2;

#endif

---------------------------------------------------------------------------------------------

#ifndef 宏名 //如果没有定义宏"宏名",则编译代码段1,否则编译代码段2;

代码段1;

#else

代码段2;

#endif

---------------------------------------------------------------------------------------------

#if 表达式 //判断表达式的逻辑值(真或假),若逻辑值为真,则编译代码段1,否则编译代码段2.

代码段1;

#else

代码段2;

#endif

----------------------------------------------------------------------------------------------

三、常量的定义:

1.const关键字定义常量:

1.普通常量: <cosnt> <数据类型> <常量名> = <常量值>;

2.const涉及指针: 暂时不做讲解,有兴趣的同学课后可以看看.

<const> <数据类型> *<指针变量名>;

: const修饰的是常量数据.指针变量存储的指针(地址)可以改变,但是存储的指针(地址)指向的数据是一个不

能改变的常量。

<数据类型> *const <指针常量名>;

: const修饰的是常量指针.指针的指向,也就是指针本身是一个不能改变的常量,但指针指向的数据可以改变.

2.宏定义常量:

#define 宏名 常量

比如: #define A 35 //A就表示常量值35.任何地方使用宏A等于使用整型常量35.

变量,运算符与表达式.

局部变量与全局变量简介.

四、总结:

上面是本人对于C基础知识做出的总结,如果有哪位小伙伴对C感兴趣的话,可以私信我回复“资料”,我这里整理了许多对小白有用处的资料欢迎大家一起讨论学习C.

分享标题:C语言——基础知识——预处理,常量定义,数据类型
文章URL:/news28/101628.html

成都网站建设公司_创新互联,为您提供电子商务网站排名外贸网站建设用户体验网站制作建站公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司