前五篇有的编程里面其实有很多内容了,新手要认真琢磨程序运行的各个环节。我们来说说简单的东西,也是最基本的东西,那就是数据。数据有数据类型,C语言常用的有整型,长整型,浮点型,双精度型,字符,字符串,数组,指针,结构,枚举等,不过最常用的是整型、字符、数组,指针。不过我以前说过了,这些东西,都是对数据的封装,最最最(重要的事情说三次)基本的是二进制!
在科幻小说《三体》中,牛顿同学发现了万有引力,并且知道要用他发明的微积分(大学要学习)去求解出三体(三个星球)的运行规律。但是当时的条件是没有计算机的,于是他和冯诺依曼找到了秦始皇!秦始皇有3000万大军,纪律严明。于是冯诺依曼用这3000万大军来计算微积分,他要把这3000万大军建立成一个计算机系统。每一个人代表一个逻辑单元,手中有两面旗,一个黑旗一个白旗,组成三角结构。三角形顶点看前面两个人举的旗来决定举自己的旗:
1、或门逻辑单元:底边前面两个人有一个人举白旗,顶点的那个人就举白旗;如果底边两个人都举黑旗,顶点的人就举黑旗。
2、与门逻辑单元:底边两个人只要有一个人举黑,顶点那个人就举黑旗;如果底边两人举白旗,顶点那个人才举白旗。
最后建成了!秦始皇一声令下,由3000万大军组成的计算开始运行自检!旗子翻动,CPU运行,总线上各种战马开始跑起来!非常壮观!当然如果谁举旗出错了,查出来就要看头的!
其实白旗代表1,黑旗代表0,上面的两个逻辑单元就是二进制的或与运算。
或门:1|0=1;1|1=1;0|1=1;0|0=0;
与门:0&1=0;1&0=0;0&0=0;1&1=1;
二进制就是计算机最基本的数据,在器件上就是通电的是1,不通电的是0。什么是二进制?010100010这些都是二进制,二进制就是逢2进1。1+1=10。10就表示是十进制的2。十进制是0到9,二进制是0到1。
在计算机中,所有的数据,都是二进制的封装,比如整型(int)表示整型数据,在一些系统中,int表示32位,四个字节,一个字节8位,每一位你可以是0或者1。其他数据类型也类似。
可以下载二进制转换的APP看一下,十进制对应的二进制是多少,截图如下:
上图是十进制10,二进制它就是1010,十六进制就是A了(十六进制,从0到9到ABCDEF),八进制是12(八进制是0到7,逢8进1,不能读成一十二,读一二)。
可以输入其他浮点型数据比如1.0,看看二进制是多少。我们经常看到的十进制,在计算机中都会用二进制代替的。所以我们编程的时候很少用到二进制,特殊情况下需要用到二进制。
好的!继续我们的编程,认识这些数据,理解一下计算机之父冯诺依曼大师的智慧以及秦始皇3000大军的壮观景象!
#include
int main()
{
int a = 1;
float a1 = 1.0;
double a2 = 1.00;
char b = 'b';
char b1[] = { 'b', 'c', 'd' };
int c = 0;
int result = a + a1;
int result1 = a | c;// 或
int result2 = a & c;// 与
int result3 = ~c;// 非
int all[] = { result, result1, result2, result3 };// 把结果都放到这个整型数组
// 可以试着写其他运算//加减乘除求余,除是/,求余是%。
printf("result=%d,result1=%d,result2=%d,result3=%d\n", result, result1, result2, result3);
for (int j = 0; j < (sizeof(all) / sizeof(all[0])); j++)
{
printf("result%d:%d\n", j, all[j]);
}
// 留给大家写字符相关的,把上面的字符数组输出
return 0;
}
前面的int,float,double是整型,浮点型,双精度型,因为计算机里面最重要的是内存,它是有限的。所以每个类型所占的空间是不一样的,float占得空间就比int大,double就更大一些。比如0,最合理的应该是只要一位来存储它即可,如果你用64位来存0,有点浪费了吧。所以每种数据类型,都有它自己的用处,能用int表示的数据比如100,你就不要用float了。当然这种2.0有小数点的,int就无法表示了,需要float来!
所以上面的程序中,有一个函数你们初次看到,就是sizeof,这个函数就能得到你这个数据占多少字节了。
sizeof(all) / sizeof(all[0])是什么意思呢?all是一个整型数组,但是我们不知道它里面有几个数,怎么办?那就用sizeof(all)这个方法知道all一共占了多少字节,然后除以它存储的一个数据类型为int所占的字节,就得到它一共有几个数了。
好了,大家可以把代码复制或者自己写(我是直接在C4droid打的代码)到手机的编程软件中。然后运行!成功后,看看逻辑,然后完成留下的小练习,怎么打出字符数组里面的内容。
最后,介绍下C4droid设置相关的东西,就是菜单哪里的英文是什么意思:
上图的英文我解释下:
Open (打开),New(新建),Save(保存),Compile(编译),Run(运行) 。
下拉菜单:
Autocomplete 自动补全(编码提示),Find查找,Go to Line 跑到某一行,Compiler output 编译输出,Format source 格式代码,对齐,Export导出(要导出执行程序,就点这个)Preferences(更多设置)。
最后提醒调试代码问题:
看上图,如果我缺少了“;",点击compile的时候会提醒哪一行有错误,非常方便。所以,一般都是先新建,然后写代码,写完了,compile一下,如果成功,就可以run了。
我上面留的代码,最后会输出什么结果?有兴趣的同学一定要亲自动手把代码敲进手机的C4droid软件,或者有问题的也可以到下面的微信公号找我!
作者:谋哥,微信公号vjiazhi,略懂技术产品运营。