逗比:“大家好!几天不见了,有没有想我呢?”
棒槌:“没有。”
逗比:“哎,我说,你不是说要来请教我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语言中有哪些基本数据类型。”
名称 | 符号 | 占用字节数 |
短整型 | short | 2 |
长整型 | int | 4 |
双长整型 | long | 8 |
无符号短整型 | unsigned | 2 |
无符号长整型 | unsigned long | 4 |
无符号双长整型 | unsigned long long | 8 |
单精度浮点型 | float | 4 |
双精度浮点型 | double | 8 |
无符号单精度浮点型 | unsigned float | 4 |
无符号双精度浮点型 | unsigned double | 8 |
字符型 | char | 1 |
指针型 | void * | 8 |
棒槌:“老是以后以后,哎。”
逗比:“别急,棒槌就得从头开始慢慢学~”
棒槌:“说谁棒槌呢?”
逗比:“好啦,知道了数据类型以后,我们再来看看在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 | 指针 |
逗比:“你呀,就是太前卫了,你说的这些,是我下次要讲的,别那么着急,先把今天讲的东西全部整明白再说吧~”
棒槌:“这么简单的东西有什么看的啊,喂喂!别跑啊!!给我再讲点!!!~~~~”