C语言那点事儿~
- szyzln
- 帖子: 910
- 注册时间: 2008-10-31 15:28
- 来自: 中国上海
- 联系:
- ywmy210
- 帖子: 257
- 注册时间: 2010-10-14 12:54
Re: C语言那点事儿~
没想到一下子都看完了。。蜗牛还是一如继往的有才。。
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
在进行了大致的了解之后,图笨笨又找了几本专门讲汇编指令的书,然而面对这一本本书,图笨笨认得上面的每一个文字,却实在无法理解他们组合在一起后说的是什么。这汇编真比非洲土著语言还难看懂,而且汇编似乎还不是一种,有什么intel风格的,和AT&T风格的。intel风格的类似这样:
AT&T风格的类似这样:
总之是很头疼的,跟汇编相比,图笨笨顿时觉得C语言是如此的平易近人,如此的通俗易懂。
就比如变量吧。汇编里面基本就没这个概念,汇编都是寄存器、内存地址。变量,其实咱们之前也提到了,就是在内存空间里面存着的一段数据。申明一个变量,就意味着告诉计算机,给我一块空间,存一个数,并且给这个数起个名字,就是变量名,以后再访问起来,就方便了。C语言里的变量有很多种,大体上可以分为两类:简单变量和不简单的变量^_^
先说说这简单的吧,包括short,int,long,char,float,double这几个类型。
short类型能够表示一个比较小的整数,int也是整数,但是可以比short大一些。long型还是整数,但是可以比int更大。char型存储的是一个字符,float是一个浮点型数据,说简单了吧,就是带小数点的数。double是双精度浮点型,就是可以比float小数点后面的位数多。那说了这么半天,这些个类型到底能存多大的数呢?这个跟具体的平台有关。
代码: 全选
instr foo,segreg:[base+index*scale+disp]
mov eax,[ebx+20h]
add eax,[ebx+ecx*2h]
lea eax,[ebx+ecx]
sub eax,[ebx+ecx*4h-20h]
代码: 全选
instr segreg:disp(base,index,scale),foo
movl 0x20(%ebx),%eax
addl (%ebx,%ecx,0x2),%eax
leal (%ebx,%ecx),%eax
subl -0x20(%ebx,%ecx,0x4),%eax
就比如变量吧。汇编里面基本就没这个概念,汇编都是寄存器、内存地址。变量,其实咱们之前也提到了,就是在内存空间里面存着的一段数据。申明一个变量,就意味着告诉计算机,给我一块空间,存一个数,并且给这个数起个名字,就是变量名,以后再访问起来,就方便了。C语言里的变量有很多种,大体上可以分为两类:简单变量和不简单的变量^_^
先说说这简单的吧,包括short,int,long,char,float,double这几个类型。
short类型能够表示一个比较小的整数,int也是整数,但是可以比short大一些。long型还是整数,但是可以比int更大。char型存储的是一个字符,float是一个浮点型数据,说简单了吧,就是带小数点的数。double是双精度浮点型,就是可以比float小数点后面的位数多。那说了这么半天,这些个类型到底能存多大的数呢?这个跟具体的平台有关。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
通常根据C语言标准,char型表示字符,通常来说是1个字节,但是没有硬性规定必须用8个二进制位来存储,你的CPU架构或内存设计成了只能16位16位的存储,那你用16个bit来表示char也没人管你。(但是你必须保证sizeof(char)=1)short型是短整型变量,int是整型变量,long是长整形变量。C语言标准只规定了short的长度必须小于等于int,long的长度必须大于等于int,没有规定具体多长。通常在32位平台上(32位cpu或64位cpu上运行的32位系统),int型占4个字节,short型占2个字节,long型……很奇葩,也占4个字节。(也就是说如果在32位平台,你定义了一个int型变量来记录你缺点的个数,后来发现不够,于是试图改为long型,那你的企图是必然失败的。)如果是64位平台,int型为了兼容以往的程序,依然是4个字节,long型变成了8个字节。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
- 月下叹逍遥
- 论坛版主
- 帖子: 33994
- 注册时间: 2010-10-07 14:23
- 系统: Archdows10
- 来自: 某系某星某洲某国某省某市
- 联系:
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: C语言那点事儿~
一年了,这帖子还活着啊。 

◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
复活~YeLee 写了:一年了,这帖子还活着啊。

虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
在图书馆看书的时候,图笨笨发现,在C语言里面使用的变量,有各种各样的类型。根据变量的不同,所在的内存空间也不大一样。可是手上这本盗版的谭咏麟写的C语言程序设计里又说的不明不白。无奈拿着书,去图书馆“网吧”查查去吧。不查还好,一查,一大堆概念扑面而来。有什么堆啦,栈啦,code区啦之类的。一堆千奇百怪的名词,顿时一下子充斥在图笨笨大脑的每一条神经里,堵塞着本就不算宽敞的思考的通路。于是图笨笨想找个人来给他疏通一下。
图笨笨估计在这个时间,李那厮那家伙肯定又在忙着编译啥新奇的软件;麦金塔同学夹着他的笔记本不知道在哪个角落coding;温豆豆准会在宿舍但一定是在dota——总之,那三个家伙是靠不住的,还是找别人帮忙吧。所幸网络上面的高手还是很多的,图笨笨登陆了一个关于C语言开发的论坛,发个帖子提问一下。找大牛给讲讲啥叫堆,哪个叫栈。很快,就有个热心的牛人回复了,这位牛人叫做FreeBSD:to be continue...
图笨笨估计在这个时间,李那厮那家伙肯定又在忙着编译啥新奇的软件;麦金塔同学夹着他的笔记本不知道在哪个角落coding;温豆豆准会在宿舍但一定是在dota——总之,那三个家伙是靠不住的,还是找别人帮忙吧。所幸网络上面的高手还是很多的,图笨笨登陆了一个关于C语言开发的论坛,发个帖子提问一下。找大牛给讲讲啥叫堆,哪个叫栈。很快,就有个热心的牛人回复了,这位牛人叫做FreeBSD:to be continue...
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
-
- 帖子: 893
- 注册时间: 2011-02-14 17:46
Re: C语言那点事儿~
原来蜗牛还有这个大作
根据Ritchie论文中的说法,C语言名称的由来他不想给出统一的说法,随你们觉得是BCPL的第二个字母,或者B后面是C(原话是leave it to open discussion)
char规定了必须一个字节,sizeof(char)必须是1,但是一个字节不要求8个二进制位(C++就是规定多少多少二进制位了)
根据Ritchie论文中的说法,C语言名称的由来他不想给出统一的说法,随你们觉得是BCPL的第二个字母,或者B后面是C(原话是leave it to open discussion)
char规定了必须一个字节,sizeof(char)必须是1,但是一个字节不要求8个二进制位(C++就是规定多少多少二进制位了)
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
原来还有这个规定啊,谢谢指点。已经修改原文rosynirvana 写了:原来蜗牛还有这个大作
根据Ritchie论文中的说法,C语言名称的由来他不想给出统一的说法,随你们觉得是BCPL的第二个字母,或者B后面是C(原话是leave it to open discussion)
char规定了必须一个字节,sizeof(char)必须是1,但是一个字节不要求8个二进制位(C++就是规定多少多少二进制位了)
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
- qgymib
- 帖子: 539
- 注册时间: 2010-04-02 16:44
- 系统: openSUSE 13.2 x64
- 懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
Re: C语言那点事儿~
谢谢,已更正。qgymib 写了:一个很小的笔误:应该是long的长度必须大于等于int吧long的长度必须小于等于int
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
10.04新手入门——笨兔兔讲述自己的故事
-
- 帖子: 2148
- 注册时间: 2012-12-16 15:43
- 系统: debian
Re: C语言那点事儿~
很好啊,coding一点不枯燥了,希望继续啊 
