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

上一篇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语言从零开始(五)-常量&变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 1、标识符 什么事标识符呢?变量的名字就是标识符。不仅限于变量名,程序中各种元素的名字,都属于标识符。例如符号常量...
    滕王阁序阅读 880评论 0 0
  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,706评论 1 6
  • 这个周末还真不一样,平常周五晚上从不写作业的儿子,竟然把周末的作业在周五晚上20:30之前全部完成了,这个时...
    芳草悠悠_44a1阅读 175评论 0 1
  • 内心总有一道门槛跨不出去,忘却了曾经那个拼命的自己。满满的失败感或许造就了如今的空虚感。最近爱上了耳机陪伴下的世界...
    莱恩泰娜阅读 123评论 0 0