c语言是什么!!!

    请问:!a在c语言是什么中是什么意思

    取反(逻辑型),就是“非”的意思!0=1,!1=0!2=0,!后面接任何一个非零的数结果都是0因为当a不等于0时系统就默认它的逻辑值为1,只有當a=0时a的逻辑值才为0所以,当a不等于0时!a=0;当a=0时,!a=1


      a=*p++的意思是p指针指向的值赋给a,然后指针加一指向下个单元

      c语言是什么,是一种通用的、过程式的编程语言广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点茬程序员中备受青睐。最近25年是使用最为广泛的编程语言


    !表示“非”,是一种逻辑运算
}

来自一个小白的提问:“c语言是什么本身用什么语言写的”
换个角度来问,其实是:c语言是什么在运行之前得编译才行,那c语言是什么的编译器从哪里来用什么语訁来写的?如果是用c语言是什么本身来写的到底是先有蛋还是先有鸡?
我们假设世界上不存在任何编译器 先从机器语言说起,看看怎麼办
机器语言可以直接被CPU执行,不需要编译器
然后是汇编语言, 汇编语言虽然只是机器语言的助记符但是也需要编译成机器语言才能执行,没办法只能用机器语言来写这第一个编译器了(以后就不用了)
OK, 这么一层层上来终于得到了一个用c语言是什么写的编译器, 真是够麻烦的
到这个时候,之前那个汇编写的c语言是什么编译器就可以抛弃了
当然,如果在c语言是什么之前已经出现了别的高级語言,例如Pascal那就可以用Pascal来写一个c语言是什么的编译器。
第一个Pascal的编译器据说使用Fortran写的而作为第一个高级语言的Fortran,它的编译器应该是汇編语言写的


关于编译器,这里边有个有趣的传说:
传说Unix 发明人之一的 Ken Thompson在贝尔实验室大摇大摆的走到任何一台Unix机器前,输入自己的用户洺和密码就能以root的方式登录!
贝尔实验室人才济济,另外一些大牛发誓要把这个漏洞找出来他们通读了Unix的C源码,终于找到了登录的后門 清理后门以后编译Unix , 运行, 可是Thompson 还是能够登录进去
有人觉得可能是编译器中有问题,在编译Unix的时候植入了后门 于是他们又用c语言是什么重新写了一个编译器,用新的编言编译器有问题 这个编译器在编译Unix源码的时候,当然会植入后门 这还不够,更牛的是如果你用C 語言写了一个新编译器,肯定也需要编译成二进制代码啊用什么来编译,只有用Thompson写的那第一个编译器来编译好了, 你写的这个编译器僦会被污染了你的编译器再去编译Unix , 也会植入后门 :-)
说到这里我就想起了几年前的XcodeGhost 事件,简单来说就是在Xcode(非官方渠道下载的)中植入了木馬这样XCode编译出的ios app都被污染了,这些app就可以被黑客利用做非法之事
虽然这个XCodeGhost和Thompson的后面相比差得远,但是提醒我们下载软件的时候要走囸规渠道,从官方网站下载认准网站的HTTPS标准,甚至可以验证一下checksum


可能有人问:我用汇编写一段Hello World都很麻烦,居然有人可以用它写复杂的編译器这可能吗?
然后用汇编语言写个编译器只搞定这个语言的子集C0,这样写起来就容易不少
C0这个语言可以工作了,然后我们扩展這个子集例如添加struct,指针...... 把新的语言称为C1。
那C1这个语言的编译器由谁来写 自然是C0。
等到C1可以工作了再次扩展语言特性,用C1写编译器得到C2。
这个过程被称为bootstraping 中文叫做自举。

}

我要回帖

更多关于 c语言是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信