数据类型

C语言数据类型是如何被大多数计算机系统所支持?

问题: 在读KR版的The C Programming Language一书时,我在看到这样一条说明: 因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。 这段黑体说明了什么?能否找到一个例子来说明C语言中的某种数据类型或控制结构不被某种计算机系统直接支持呢? 回答: 事实上,C语言中确实有不被直接支持的数据类型。 在许多嵌入式系统中,硬件上并没有浮点运算单元。因此,如果你写出下面的代码: float x = 1.0f, y = 2.0f; return x + y; 可能会被转化成下面这种形式: unsi
2015-04-03
2分钟阅读时长

如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型?

问题: 假如说,使用32位的整型会溢出,在不考虑使用长整型的情况下,如果我们只需要表示2的40次方范围内的数,是否可以利用某些40位长的数据类型来表示呢?这样的话,每个整型数就可以节省24位的空间。 如果可以,该怎么做? 需求是:我现在必须处理数以亿计的数字,所以在存储空间上受到了很大的限制。 回答: 可以是可以,但是 这种方法的确可行,但这么做通常没什么意义(因为几乎没有程序需要处理多达十亿的数字): #include stdint.h // 不要考虑使用long long类型 struct bad_idea { uint64_t var : 40; }; 在这里,变量var占据
2015-02-19
4分钟阅读时长