C语言基础学习

《C语言3—标识符,关键字,数据类型》

2019-03-07  本文已影响23人  竹予青青

2019年3月7日星期四 阴转多云
今天天气依旧挺好的哇,有阳光。(我想问一下多云和晴的界限到底是啥?我感觉是晴天气预报说多云。)
早上出门的时候很冷。
昨天晚上心情有点down,所以没学多少C语言,今天继续学习啊。
(声明,理论知识部分全部来自菜鸟教程!)
今日学习内容:(上接C语言基础知识学习2)

(3)标识符

C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。
一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)
C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。

9、关键字

下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。

关键字 说明
auto 声明自动变量
break 跳出当前循环
case 开关语句分支
char 声明字符型变量或函数返回值类型
const 声明只读变量
continue 结束当前循环,开始下一轮循环
default 开关语句中的"其它"分支
do 循环语句的循环体
double 声明双精度浮点型变量或函数返回值类型
else 条件语句否定分支(与 if 连用)
enum 声明枚举类型
extern 声明变量或函数是在其它文件或本文件的其他位置定义
float 声明浮点型变量或函数返回值类型
for 一种循环语句
goto 无条件跳转语句
if 条件语句
int 声明整型变量或函数
long 声明长整型变量或函数返回值类型
register 声明寄存器变量
return 子程序返回语句(可以带参数,也可不带参数)
short 声明短整型变量或函数
signed 声明有符号类型变量或函数
sizeof 计算数据类型或变量长度(即所占字节数)
static 声明静态变量
struct 声明结构体类型
switch 用于开关语句
typedef 用以给数据类型取别名
unsigned 声明无符号类型变量或函数
union 声明共用体类型
void 声明函数无返回值或无参数,声明无类型指针
volatile 说明变量在程序执行中可被隐含地改变
while 循环语句的循环条件
C99新增关键字
C11新增关键字

10、C 中的空格

只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。
在 C 中,空格用于描述空白符、制表符、换行符和注释。
空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。
(简单来说就是关键字与其他的代码要有空格来让编译器识别出来,不然关键字可能不能起到该有的作用。)

11、C 数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

序号 类型与描述
1 基本类型:它们是算术类型,包括两种类型:整数类型和浮点类型。
2 枚举类型:它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
3 void 类型:类型说明符 void 表明没有可用的值。
4 派生类型:它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。

数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。

(1)整数类型

下表列出了关于标准整数类型的存储大小和值范围的细节:


注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。
以下列出了32位系统与64位系统的存储大小的差别(windows 相同):


为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。下面的实例演示了获取 int 类型的大小:
#include <stdio.h>
#include <limits.h>
 
int main()
{
   printf("int 存储大小 : %lu \n", sizeof(int));
   
   return 0;
}

%lu 为 32 位无符号整数,详细说明查看 C 库函数 - printf()

当您在 Linux 上编译并执行上面的程序时,它会产生下列结果:

int 存储大小 : 4

(2)浮点类型

下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

类型 存储大小 值范围 精度
float 4 字节 1.2E-38 到 3.4E+38 6 位小数
double 8 字节 2.3E-308 到 1.7E+308 15 位小数
long double 16 字节 3.4E-4932 到 1.1E+4932 19 位小数

头文件 float.h 定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节。
下面的实例将输出浮点类型占用的存储空间以及它的范围值:
实例:

#include <stdio.h>
#include <float.h>
 
int main()
{
   printf("float 存储最大字节数 : %d \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );
   
   return 0;
}

%E 为以指数形式输出单、双精度实数,详细说明查看 C 库函数 - printf()
当您在 Linux 上编译并执行上面的程序时,它会产生下列结果:

float 存储最大字节数 : 4
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6

(补充:FLT_MIN、FLT_MAX、FLT_EPSILON是C++中的定义:

/* min positive value */ 
#define FLT_MIN 1.175494351e-38F 

/* max value */ 
#define FLT_MAX 3.402823466e+38F 

/* smallest such that 1.0+FLT_EPSILON != 1.0 */ 
#define FLT_EPSILON 1.192092896e-07F 

就是定义了FLOAT所能表示的最大值,最小值,以及最小的正数。)

(3)void类型

void 类型指定没有可用的值。它通常用于以下三种情况下:

序号 类型与描述
1 函数返回为空:C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);
2 函数参数为空:C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void);
3 指针指向 void:类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

(这里想提一个疑问啊,就是Markdown里面如何实现一个表格框内换行呢?就像下面截图这样。)

摘录别人的笔记:

常用基本数据类型占用空间(64位机器为例):
char : 1个字节
int :4个字节
float:4个字节
double:8个字节
基本类型书写:
整数:
a,默认为10进制 ,10 ,20。
b,以0开头为8进制,045,021。
c.,以0b开头为2进制,0b11101101。
d,以0x开头为16进制,0x21458adf。
小数:
单精度常量:2.3f 。
双精度常量:2.3,默认为双精度。
字符型常量:用英文单引号括起来,只保存一个字符'a'、'b' 、'*' ,还有转义字符 '\n' 、'\t'。
字符串常量:用英文的双引号引起来 可以保存多个字符:"abc"。

11、C 变量

变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头大写字母和小写字母是不同的,因为 C 是大小写敏感的。
有以下几种基本的变量类型:


C 语言也允许定义各种其他类型的变量,比如枚举、指针、数组、结构、共用体等等。
(1)C 中的变量定义

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。
变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成。
下面列举几个实例:

extern int d = 3, f = 5;    // d 和 f 的声明与初始化
int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。


最后说几句昨天留下来的提问吧。
今天和同学们去找吴老师开会之后她和我们唠嗑,我才知道原来她是工作了八年才考研到大学里面,然后继续读博,最后当大学老师到现在。在这过程中她自己一直在不断学习,之间还学了个啥电子做衣服,嗯我不知道做啥的,但是很厉害的样子。她告诉我们,不管是在工作还是读研,不管怎么样都要一直学习,她就算当老师也是一直每天都要抽时间来自己学习,也说在学习上留下了很多疑问和难题,希望能够把这些疑问和难题解决掉,不留遗憾。
听完这些感觉很是敬佩啊,以前大家都说她教书有些晦涩之类的,我想和她工作了八年相当于比别人晚八年有关吧,所以可能有点欠缺。但是不是每个人工作八年后都有勇气去考研,也不是每个人都能够考上,她现在也是很厉害的啊。
不管怎么样,努力都是必要的啊!


weif
2019年3月7日

上一篇下一篇

猜你喜欢

热点阅读