1.2合适的才好用(数据类型)

本文通过生动有趣的对话形式,介绍了C语言的基础知识,包括数据类型的原理、变量的定义及使用方法,并通过实例演示了如何利用printf函数显示变量值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逗比:“大家好!几天不见了,有没有想我呢?”

棒槌:“没有。”

逗比:“哎,我说,你不是说要来请教我C语言的么,这一来就拆台是几个意思?”

棒槌:“什么叫拆台,我是想让你快点开始讲课,别一个劲在这逗比。”

逗比:“真是个棒槌,活跃气氛才能更有效率的学习,这都不懂啊?棒槌~”

棒槌:“说谁棒槌呢?说谁棒槌呢?”

逗比:“好了好了,既然你这么着急,那我们就进入主题吧,上回的HelloWorld程序还记得吗?写一下试试。”

棒槌:“你先给我说清楚你说谁棒槌么?啊?你说谁棒槌呢?”

逗比:“咱们大伙不要理这个棒槌,还是来看看上次的程序吧。”

#include <stdio.h>

int main(int argc, const char *argv[]) {
    printf("Hello, World!\n");
    return 0;
}

棒槌:“不和你一般见识,看看我写的吧,很快吧?比你快吧?”

逗比:“棒槌,你以为光快就行了?要学习的东西还很多呢!”

棒槌:“我只是证明我学出来一定比你强!等会,你说谁棒槌呢?”

逗比:“好啦!这个程序写出来,它的问题就在于,我们只能固定它输出的内容。而我们知道,我们使用计算机,编写程序,当然是为了想办法得到一个我们不知道的结果,然后把它输出,不然这个程序是没有意义的。”

棒槌:“敢说我写的程序没有意义……那你说怎么让它有意义啊?”

逗比:“终于肯虚心求教了?再吐槽我就不讲了!”

棒槌:“快讲啦!真吊胃口。”

逗比:“我们今天来讲讲变量,所谓变量,当然就是指程序中可以变化的量。这是程序设立中非常重要的一个内容。不过在讲如何在C程序中定义变量之前,我们得先来说说数据类型。”

棒槌:“这个我知道,由于数据的种类不同,它所占的空间大小也不同,因此,我们需要对不同大小的数据做出不同的处理。”

逗比:“可不仅仅是占用空间的大小哦!有一些数据种类,虽然它们占的空间一样,但是,我们也要按照不同的方式来处理它们。我说棒槌,你应该学过计算机基础吧?”

棒槌:“学过啊,大学的必修课,想不学也不行啊!”

逗比:“那么,计算机是如何保存整数和小数的呢?”

棒槌:“保存整数非常简单,把这个数转换成相应的二进制数,每一个字节可以保存8个二进制位。至于小数,以前曾经用过定点小数,就是将小数点的位置固定来表示小数,不过后来都是用浮点数来表示,也就是把要表示的小数写成科学计数法的形式,用一些位来表示底数,再用一些位来表示10的指数,这样一来,如果对精度要求高也可满足,最大小要求高也可以满足,只不过它们二者不可兼顾罢了。”

逗比:“说得非常好,那如果表示负数呢?”

棒槌:“如果要表示负数,我们就把第一位用来表示符号,0代表正,1代表负。”

逗比:“概念很清晰,表扬!那我提个问题,如果我规定用2个字节来表示一个整数,那么表示的范围有多大?”

棒槌:“2个字节也就是16位,如果是无符号的,可以表示0到2的16次方减1,也就是65535,如果是有符号的,那应该是从-2^15~2^15-1,也就是-32768到32767。”

逗比:“灰常好灰常好!你也有不棒槌的时候啊!”

棒槌:“那是…………喂!你说谁棒槌呢?”

逗比:“既然原理都清楚了,那多少个字节能表示什么范围的数,应该也就很容易推算出来了。我们接下来就来看看C语言中有哪些基本数据类型。”

名称符号占用字节数
短整型short2
长整型int4
双长整型long8
无符号短整型unsigned2
无符号长整型unsigned long4
无符号双长整型unsigned long long8
单精度浮点型float4
双精度浮点型double8
无符号单精度浮点型unsigned float4
无符号双精度浮点型unsigned double8
字符型char1
指针型void *8
逗比:“这里需要说明的是,字符型其实本质就是8位整数,只不过这个整数通常不是用来表示数值,而是表示一个字符的ASCII码,另外指针类型我们会在以后详细讨论。”

棒槌:“老是以后以后,哎。”

逗比:“别急,棒槌就得从头开始慢慢学~”

棒槌:“说谁棒槌呢?”

逗比:“好啦,知道了数据类型以后,我们再来看看在C语言中如何定义一个变量。”

棒槌:“扯开话题的本事谁也比不了……”

int number;

逗比:“就像这样,先写一个类型符号,再写一个变量名称。这里需要强调的是,变量名称必须由数字、字母和下划线组成,并且不能以数字开头。这是强制性要求,如果不遵守将无法通过编译。还有一些要求属于程序规范:1.变量名称应该以小写字母开头,2.变量名称如果采用多个单词应该采用驼峰式,例如"nameOfUser","numberInClaa",3.变量名称应该有意义,如果变量没有特定的数学含义,不要使用"a","b","c","i","j","k","x","y","z","hehe","haha","f1","f2","abc"之类的名称,4.变量名应该采用英文单词,而不是汉语拼音或其他语言的罗马音,例如"xiaoMing","jiSuanJiKeXueJiShu","KonNiTiHa","OHaYouGoZaIMaSu"这些都是不规范的命名,5.如果前后单词表示一种上下标形式,中间应该用下划线隔开,例如"vector_x","string_length","body_upside"等”

棒槌:“好麻烦~”

逗比:“另外再介绍一个赋值符号'=',可以在定义变量的同事为其初始化,也可以在变量定义以后,为其赋值”

int number = 1;
int value;
value = 2;
number = value;

逗比:“以上的这些都是合法的表达式。”

棒槌:“这个我学会了,可是,我们就算给变量赋值了,如果我们不能看到变量的值,那又有什么用呢?”

逗比:“哈哈,我就知道你要这么问,我接下来就来介绍如果利用printf()函数来打印变量。在printf()函数的第一个参数(一个字符串)中可以写入占位符(也叫格式符),然后再传入与格式符相对应的参数来替换格式符实际的值。”

棒槌:“………………”

逗比:“别这么两脸懵逼看着我,我给你举个例子你就懂了。”

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int num1 = 6;
    double num2 = 4.8;
    printf("num1 is %d, num2 is %lf\n", num1, num2);
    return 0;
}

逗比:“这里的%d和%lf就是占位符,在字符串以外再传两个参数num1和num2分别与%d和%lf对应,输出的效果就是”

num1 is 6, num2 is 4.800000

逗比:“我们看到了这里并没有出现4.8,而是4.800000,因为%lf这个格式符默认输出小数点后6位,如果你希望改变小数点位数比如只输出三位,你可以将%lf改成%.3lf,其他是同样的道理,下面给出常用格式符的表格”

格式符表示含义
%d十进制整数
%o八进制整数
%x十六进制整数
%i整型
%ld长整型
%u无符号整型
%lu无符号长整形
%f浮点型
%lf双精度浮点型
%c字符
%s字符串
%p指针


棒槌:“你说的这些我都明白了,可是这些数据类型表示的内容很有限啊,如果说我要表示一个学生怎么办?这个学生又有名字,又有性别,又有学号,还有很多内容,你总不能让我编个摩斯密码吧?”

逗比:“你呀,就是太前卫了,你说的这些,是我下次要讲的,别那么着急,先把今天讲的东西全部整明白再说吧~”

棒槌:“这么简单的东西有什么看的啊,喂喂!别跑啊!!给我再讲点!!!~~~~”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

borehole打洞哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值