##一些计算机的冷知识问答
#为什么数组的下标从0开始编号?为什么不是1?
索引值是一个偏移量:它表示当前要引用的这个元素到数组中第一个字符之间的距离。计算机在存储器中以连续字节的形式保存数组,并利用索引计算数组元素在存储器中的位置。这样可以根据下标很快找到想要的数据。
#在C语言中,布尔值是用数字表示的。对C语言来讲,数字0代表假的值。任何不等于0的数字都将被当作真处理。
#在C语言中,逻辑与和逻辑或的运算可以只使用“|”和“&”。而“&&”和“||”被称为短路与和短路或。短路或和短路与表示如果条件成立则执行之后的逻辑。而“|”和“&”也经常被拿来进行逐位运算,对逻辑表达式求值只是它们的其中一个用处。“&”也还被用取内存地址。
#在C语言中,几乎每样东西都有返回值。不仅仅是函数调用,就连赋值表达式也有返回值。
x = 4;
y = (x = 4);
y = x = 4;
我们将4赋值给变量x。但其实“x = 4;”本身也有一个值,这个值就是赋给x的值,也就是4。而“y = (x = 4);”表示返回的值赋给了变量y。当我们把这条语句的括号去掉之后就变成了同时给多个变量赋值的链式赋值语法“y = x = 4;”
#1990年1月15日,AT&T的长途电话系统死机,照成6万人无法使用电话服务。起因是一个负责写电路交换部分C代码的开发人员企图用break从if语句中退出。break使程序跳过了整段代码,引起了这个bug,令七千万次电话呼叫在9个多小时内无法接通。
#在C语言中scanf()的意思其实是scan formatted,它用来扫描带格式的输入。
#声明是一段代码,它声称某样东西(变量或函数)存在;而定义说明了它是说明东西。如果在声明了变量的同时将其设为某个值(例如int x = 4;),这段代码既是声明又是定义。
#为什么C语言中make工具规定必须使用tab缩进,而不是空格缩进呢?
因为make之父Stuart Feldman曾说过:程序正确运行了,于是就保留了下来。几个星期以后,make拥有了几个用户,大部分是朋友,但又不愿破坏代码的基本结构。
#Java的包java.lang中的lang是什么意思?
lang是language的意思,表示Java语言包。Java语言的基本功能都在里面。包括了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。
#Windows XP的XP是什么意思?
Windows XP中XP代表的就是 Experience(体验)。和Office XP末尾的XP一样