深入理解计算机系统P36
练习题2.15
只使用位级和逻辑运算,编写一个C表达式,他等价于x==y。换句话说,当x和y相等时他将返回1,否则就返回0.
题目考察的是位级运算符和逻辑运算符的用法,以下是两种实现方式,供参考:
itoa不是c的一个标准输入输出,所以可能不在stdlib.h里。
解决办法很简单,不就是要把整型转为字符串么。sprintf 格式化输出一下就好了。
举个例子:
尝试用libmemcached的类库链接memcache的时候,报错:sasl/sasl.h: No such file or directory。
经查发现是没有安装sasl的开发库,所以需要安装下,stackoverflow上说安装一个libsasl2-dev,用yum没找到,然后使用sasl和dev关键字筛选了下,得到了一个libgsasl-devel,然后就装上试了试,就ok了。
自己在尝试写一个简单的hashTable的时候,报错:
hashTable.h: In function ‘hash_resize’:
hashTable.h:40: 警告:隐式声明与内建函数 ‘calloc’ 不兼容
hashTable.h: In function ‘hash_init’:
hashTable.h:65: 警告:隐式声明与内建函数 ‘calloc’ 不兼容
解决办法就是需要包含一个头文件:
结构体-struct是把若干个数据类型组合到一起,相当于形成一个结构类型,这样的结构体变量就拥有结构体所包含的所有的数据类型。
结构体所占用的内存单元是它里面包含数据类型所占内存单元的总和。
联合体-union是为了节省内存而设置的,若干个不同数据类型共用一组内存单元。
联合体所占的内存单元是它所包含的数据类型中占用内存单元最大的那个数据类型所占用的内存单元的值。
struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。
对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。