c语言编程入门内存条是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,有两种状态,通电和断电,通电是高电平(5V),用1来表示,断电是低电平(0V),用0来表示。所以,一个元器件有2种状态。如果我们通过电路来控制这些元器件的通断电,那么就可以得到很多0、1状态的组合。例如,8个元器件有28=256种不同的组合,16个元器件有216=65536种不同的状态。虽然一个元器件只能表示2种状态,但是多个组合起来就可以表示很多状态了,所以,我们通常将8个、16个、24或32个元器件组合起来表示一个字符,8个元器件可以表示256个字符,16个可以表示65536个字符。我们将1个元器件称为1Bit(比特),8个元器件称为1Byte(字节),那么16个元器件就是2Byte,32个就是4Byte,以此类推,8×1024个元器件就是1024Byte,简写为1KB,8×1024×1024个元器件就是1024KB,简写为1MB,8×1024×1024×1024个元器件就是1024MB,简写为1GB。现在,你知道1GB的内存有多少个元器件了吧。单位换算:1Byte=8Bit1KB=1024Byte1MB=1024KB1GB=1024MB1TB=1024GB二进制思想十进制有0~9共10个数字,基数为10,逢十进一,借一当十;二进制只有0和1两个数字,基数为2,逢二进一,借一当二。例如:十进制4321=4×103+3×102+2×101+1×100二进制1101=1×23+1×22+0×21+1×20=8+4+0+1=13二进制110.11=1×22+1×21+0×20+1×2-1+1×2-2=4+2+0+0.5+0.25=6.75二进制数据的算术运算的基本规律和十进制数的运算十分相似。最常用的是加法运算和乘法运算。二进制加法:0+0=00+1=11+0=11+1=10二进制乘法:0×0=01×0=00×1=01×1=1二进制减法:0-0=01-0=11-1=010-1=1二进制除法:0÷1=01÷1=1八进制和十六进制除了二进制,编程中也经常使用八进制和十六进制。八进制有0~7共8个数字,基数为8,逢八进一,借一当八;十六进制中,用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16个数字,基数为16,逢16进1,借1当16。例如:八进制3072=3×83+0×82+7×81+2×80=1536+0+56+2=1594十六进制E3F9=14×163+3×162+15×161+9×160=57344+768+240+9=58361为了加深印象,最后给大家看个笑话。程序员A:“哥们儿,最近手头紧,借点钱?”程序员B:“成啊,要多少?”程序员A:“一千行不?”程序员B:“咱俩谁跟谁!给你凑个整,1024,拿去吧。”你看懂这个笑话了吗?请选出正确答案。A)因为他同情程序员A,多给他24块B)这个程序员不会数数,可能是太穷饿晕了C)这个程序员故意的,因为他独裁的老婆规定1024是整数D)就像100是10的整数次方一样,1024是2的整数次方,对于程序员就是整数ASCII码我们知道,一个二进制位(Bit)有0、1两种状态,一个字节(Byte)有8个二进制位,有256种状态,每种状态对应一个符号,就是256个符号,从0000000到11111111。计算机诞生于美国,早期的计算机使用者大多使用英文,上世纪60年代,美国制定了一套英文字符与二进制位的对应关系,称为ASCII码,沿用至今。ASCII码规定了128个英文字符与二进制的对应关系,占用一个字节(实际上只占用了一个字节的后面7位,最前面1位统一规定为0)。例如,字母a的的ASCII码为01100001,那么你暂时可以理解为字母a存储到内存之前会被转换为01100001,读取时遇到01100001也会转换为a。完整的ASCII码表请查看:编码随着计算机的流行,使用计算机的人越来越多,不仅限于美国,整个世界都在使用,这个时候ASCII编码的问题就凸现出来了。ASCII编码只占用1个字节,最多只能表示256个字符,我大中华区10万汉字怎么表示,日语韩语拉丁语怎么表示?所以90年代又制定了一套新的规范,将全世界范围内的字符统一使用一种方式在计算机中表示,这就是Unicode编码,也称统一码、万国码。Unicode是一个很大的集合,现在的规模可以容纳100多万个符号,每个符号的编码都不一样。Unicode规定可以使用多个字节表示一个字符,以解决本地化和跨平台问题。为了兼容ASCII,Unicode规定前0~127个字符与ASCII是一样的,不一样的只是128~255的这一段。完整的Unicode编码请查看:unicode.org目前流行的编程语言有C语言、C++、Java、C#、PHP、JavaScript等,每种语言都有自己擅长的方面,例如:C语言是较早开发的一种高级语言,后来的很多语言都是以C语言为蓝本进行设计的;C语言和C++主要用来开发软件;Java和C#不但可以用来开发软件,还可以用来开发网站后台程序;PHP主要用来开发网站后台程序;JavaScript主要负责网站的前端工作。可以将不同的编程语言比喻成各国语言(如汉语、英语、法语等),为了表达同一个意思,可能使用不同的语句。例如,表达“世界你好”的意思:汉语:世界你好;英语:HelloWorld法语:Bonjourtoutlemonde在编程语言中,同样的操作也可能使用不同的语句。例如,在屏幕上显示“HelloWorld”:C语言:printf(HelloWorld);PHP:echoHelloWorld;Java:System.out.println(HelloWorld!);每种语言都有对应的编译器,编译器能够识别“单词”和“句子”,将编程语言“翻译”成机器能识别的语言,即0和1序列。这个过程称为编译。可以说,所有的编程语言都是一个原理,使用人类能读懂的语言来编写源代码(sourcecode),再利用编译器将源代码编译成机器能读懂的语言(0和1序列),称为目标代码(objectlanguage)。编程语言是这样一套规范,它规定了编译器按照什么样的语法将源代码编译成目标代码。开发一种编程语言,重点是它的语法和编译器,有了他们,就有了编程语言。我们学习编程语言,是要学习它的语法,至于编译器是如何编译的,不在初学者的学习范围之内相似的中英文标点有:中文分号;和英文分号;;中文逗号,和英文逗号,;中文冒号:和英文冒号:;中文括号()和英文括号();中文问号?和英文问号?;中文单引号’‘和英文单引号'';中文双引号“”和英文双引号。为了加强练习,出个选择题,请大家判断下面哪一种描述是正确的:A)编程的时候不用在意中英文符号的区别B)所有语言在编程的注释内容使用中文符号也会造成错误C)感叹号没有中文和英文的区别D)编程时,使用的英文引号,也有左引号和右引号的区别E)中文和英文模式下的制表符(键盘tab键)输入效果一致学习一门新语言的惟一途径就是使用它来编程。对于初学者来说,编写的第一个程序几乎都是相同的,即在屏幕上显示“Hello,world”,专业说法为打印“Hello,world”。【例1-1】打印Hello,world。/*第一个C语言程序打印Hello,world*/#includestdio.h//包含头文件stdio.hintmain(){//主函数printf(Hello,word\n);//打印字符串return0;//返回0,表示程序正确运行}尽管这个程序很简单,但对初学者来说,它仍然可能成为一大障碍,因为要实现这个目的,首先要编写代码,然后编译、链接并运行,最后看到输出结果。掌握了这些操作细节以后,其它事情就比较容易了。关于编译和链接将在下一节说明,这里先对程序进行解释:第1行包含标准库文件,include称为文件包含命令,扩展名为.h的文件称为头文件。第2行定义名为main的函数,它不接受参数值;main函数的语句都被括在花括号中;int为main函数返回值类型。第3行打印“Hello,world”,main函数调用库函数printf以显示字符序列。第4行表示main函数的返回值为0,return让函数返回一个值。第5行结束main函数,花括弧必须成对出现。位于“/**/”中和“//”后面的内容为注释,用来对程序进行说明;注释在编译时会被自动忽略。一个C语言程序,无论其大小,都是由函数和变量组成的。函数具有某些特定功能,能执行特定操作;函数中包含一些语句,以说明操作的过程。变量则用于存储计算过程中使用的值。在本例中,函数的名字为main。通常情况下,函数的命名没有限制,但main是一个特殊的函数名,每个程序都从main函数的起点开始执行,这意味着每个程序都必须在某个位置包含一个main函数。main函数通常会调用其它函数来帮助完成某些工作,被调用的函数可以是我们自己编写的,也可以来自于函数库。上述程序段中的第一行语句#includestdio.h用于告诉编译器在本程序中包含标准输入/输出库。许多C语言源程序的开始处都包含这一行语句。我们将在后续章节对标准库进行详细介绍。函数之间进行数据交换的一种方法是调用函数向被调用函数提供一个值(称为参数)列表。函数名后面的一对圆括号将参数列表括起来。在本例中,main函数不需要任何参数,因此用空参数表()表示。函数中的语句用一对花括号{}括起来。本例中的main函数包含下面两条语句:printf(Hello,word\n);return0;调用函数时,只需要使用函数名加上用圆括号括起来的参数表即可。上面这条语句将hello,world\n作为参数调用printf函数。printf是一个用于打印输出的库函数,在此处,它打印双引号中间的字符串。用双引号括起来的字符序列称为字符串或字符串常量,如hello,world\n就是一个字符串。目前我们仅使用字符串作为printf及其它函数的参数。在C语言中,字符序列\n表示换行符,在打印中遇到它时,输出打印将换行,从下一行的左端行首开始。如果去掉字符串中的\n(这是个值得一做的练习),即使输出打印完成后也不会换行。在printf函数的参数中,只能用\n表示换行符。如果用程序的换行代替,例如:printf(Hello,word);C编译器将会产生一条错误信息。printf函数永远不会自动换行,这样我们可以多次调用该函数以分阶段得到一个长的输出行。上面给出的第一个程序也可以改写成下列形式:#includestdio.hintmain(){printf(Hello,);printf(word);printf(\n);return0;}Windows平台下推荐VC6.0或VSVisualC++6.0简称VC或者VC6.0,是微软1989年推出的一款C/C++编译器,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。VC6.0确实有点老了,微软原版VC6.0在XP、Win7、Win8下都存在兼容性问题,甚至不能正常启动,C语言中文网提供了两个经过第三方更改的版本。1)VC6.0精简版(15M/16M)VC6.0精简版维持了原版VC6.0的界面,解决了兼容性问题,简化了安装过程,可以在XP和Win7下完美运行(Win8不行)。下载地址:VC6.0精简版下载,支持Win7和XP2)C-FreeMSCL版(42M)C-FreeMSCL版是在C-Free5.0基础上集成了VisualStudio10.0SP1的编译器、调试工具、绿色部署工具等,支持XP、Win7、Win8,相当于给VisualStudio10.