我在面试中被问到在非 16 位机器上声明是否有效??
下面是声明,
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
最佳答案
它们都是有效声明,是的,因为没有语法错误。
但是,如果您的目的是获取 0
的补码(所有位取反),您应该使用:
unsigned int zero = 0;
unsigned int compzero = ~zero;
对于(例如)一个 32 位的 unsigned int
,0xffff
和 ~0
分别是:
0000 0000 0000 0000 1111 1111 1111 1111
1111 1111 1111 1111 1111 1111 1111 1111
关于c - 它在不是 16 位的机器上有效吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452171/