干货C语言学习天花板

C语言从零开始(四)-基本数据类型&赋值

2015-10-31  本文已影响7562人  天花板

上一篇C语言从零开始(三)-基本字符集讲了基本语法的第一部分,今天我们来说说C语言中的数据类型和赋值。

一,概述

C 语言包含的数据类型如下图所示:

C语言数据类型

这张图大家肯定在很多教材中都见过,它包含了C语言中涉及的全部数据类型

1. 数据类型的意义

先简单说一下数据类型的作用。在C语言中,程序操作的最基本的元素叫做变量。编程的实质就是把变量中保存的内容进行处理,最终返回一个处理后的结果。

而计算机用于保存不同变量的内部结构是不同的,最直接的不同就是在内存中为这个变量申请的空间大小不同。因此,我们在定义变量的时候应该告诉计算机这是一个什么类型的变量,这就是数据类型的意义。

一定有人会问,计算机为啥不给每个变量都分配一个足够大的空间,这样大家就可以使用同一种数据类型了,不用再做区分。这是因为最早的计算机内存是非常有限的,如果你只需要保存很小的数据却用了非常大的空间,那就造成了极大的浪费。如今内存越来越便宜,空间越来越大了,但节省空间开销依然是软件开发的一个重要原则。

话说有些脚本语言比如JavaScript中是淡化数据类型的,所有的变量都使用统一的数据类型var。有兴趣的同学可以了解一下。

2. 赋值

定义了变量之后,要给变量赋值。没有被赋值的变量是不能被使用的,这是C语言的一个重要规定。请看这段代码:

int a;
a = 5;

以上这两行完成了两个动作,第一行定义了一个数据类型为“int”,变量名为“a”的变量,第二行给变量"a"赋值5。

需要注意的是"int"和“a”中间需要一个空格,每行结束后需要一个“;”。

另外,第二行中“=”两边各有一个空格,这一点不是C语言要求的,只不过是业内约定俗成的规矩,方便阅读。这种规矩还有很多,后面会专门说到,让你的代码风格更地道。

如果觉得两行代码太麻烦,还可以这样写:

int a = 5;

这一行和前面的两行效果完全一样,采用哪种写法都可以。

此时如果我们想看看a中的值是不是5可以执行下面这行代码:

printf("%d", a);

现在你知道如何把这几行代码在Code::Blocks中运行吗?如果不会请阅读之前的文章。

BTW:最后要说的是,定义了变量一定要尽快赋一个值,我们叫初值。因为定义变量实际上是在内存中开辟了一块新空间,但空间里也许有之前留下的东西(数据)。所以,如果你不用初值把这块空间覆盖掉,很容易在后面出现莫名其妙的问题。

二,各种数据类型介绍

1.整型

整型分为short、int、long,最大的特点就是在不同平台或编译器下所分配的内存空间不同。我们统一按32bit Windows操作系统进行讲解。

整型主要任务是保存自然数的,只不过保存数字的范围不同。

1.1 短整型(short)

一般大小2Bytes(16bits),定义方法

short a = 1;

1.2 整型(int)

这是最常用的整型,一般大小4Bytes(32bits),定义方法:

int a = 6;

1.3 长整型(long)

一般大小8Bytes(64bits),定义方法:

long a = 10;

虽然在不同平台这三种变量表示的大小不同,但有一个基本原则:

short类型的大小 <= int类型的大小 <= long类型的大小
“<=” 这个符号是C语言中“小于或等于”的意思,后面会介绍

2. 浮点型

浮点型包括单精度型和双精度型。

2.1 单精度型(float)

浮点型,又称实型,也称单精度。一般占4Bytes(32bits)

float a = 4.5f;

这里4.5后面有个“f”,先记着写法,后面我们会具体讲解。

2.2 双精度型(double)

一般占8Bytes(64bits)

double a = 4.5;

打印浮点型数值的方法略有不同,如下:

printf("%f", a);

注意,只是“%f”略有不同。

3. 字符类型

3.1 单个字符类型

在各种不同系统中,字符类型都占1Bytes(8bits)。定义如下:

char c = 'a';

也可以用字符对应的ASCII码赋值,如下:

char c = 97;

打印字符类型的方法:

printf("%c", c);

这个类型需要多说几句。计算机其实是不能保存字符的,因此,字符类型的内部其实保存的也是数字。那么怎么知道哪个数字代表什么字符呢?有一张世界通用的“密码表”叫做ASCII码,它保存着大部分常用字符和数字的对应关系。

就像《潜伏》中余则成收到广播中念的数字,怎么能知道它们代表什么意思呢?需要找一本密码本查一下,于是数字变成了汉字。一样的道理。

潜伏里接收电台里密码剧照

3.2 字符串

C语言中使用双引号" "表示一个字符串,比如:"ABCDEF"。这就是我们在打印"Hello World!"时为什么要使用双引号的原因。

在C++中,有个字符串的类型交string,于是我们可以这么写:

string str = "ABCDEF";

很遗憾的是,C语言中并没有string类型,我们只能用字符数组保存字符串。关于字符数组我们会在数组部分讲解。

3.3 练习

这里提出个简单的问题,下面代码输出结果是什么,看你能不能想明白。

void main()
{
    char a = 'a';
    char c;

    c = a + 1;

    printf("%c", c);
}

4 其他类型

前面讲的六种数据类型是C语言的基础数据类型。目前掌握就可以了,至于其他的结构体、数组之类的后面会专门讲到。

还有两个关键字signed和unsigned,是用来定义变量是否保存正负号的,也可以先不了解。

三,变量的命名规则

真正的软件开发中,变量命名是一个非常重要的内容。在团队开发、项目传承的过程中,代码的可读性起着重要的作用。因此要养成好的变量命名习惯。

1. 命名要能望文生义

要便于记忆和阅读。标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。C语言开发中有一个比较著名的命名规则叫“匈牙利命名法”,有兴趣可以学习一下。

无论什么样的命名规则,都有它的利弊所在,真正的项目中也会有具体的命名规则要求。重点是,每个人自己写的代码要自己有一个统一的规则,这样无论是别人还是自己都更容易读懂和维护。不要过一段时间连自己写的代码都看不懂了,这是最基本的要求。

其实大学计算机等级考试中,很多题目都是符合这条的,这给考生很多空子可钻。记得有个题目是这样的。

int a, b, sum;
a = 5;
b = 1;

sum = XXXXX(a, b);

printf("%d", sum);

请问屏幕打印出的数字是多少?

这道题主要考的是XXXX函数的问题,也许你根本没看懂这个函数是啥意思,但一看变量“sum”你就知道最终输出的肯定是一个和,所以答案是6。

2. 要用最短的命名表达最多的意思

虽然现在对命名长度的限制越来越小,但过长的命名还是影响代码的可读性。

3. 尽量不要出现数字

Value1,Value2 这样的变量还是少用为好

4. 不要靠大小写区分的相似的标识符

int a, A; // 绝对不允许 

反正容易混淆的就尽量别用

好了,今天就先说到这里。下一篇我们开始讲常量与变量。

我是天花板,让我们一起在软件开发中自我迭代。
如有任何问题,欢迎与我联系。


上一篇:C语言从零开始(三)-基本字符集
下一篇:C语言从零开始(五)-常量&变量

上一篇下一篇

猜你喜欢

热点阅读