c - 它在不是 16 位的机器上有效吗

标签 c

我在面试中被问到在非 16 位机器上声明是否有效??

下面是声明,

 unsigned int zero = 0;
 unsigned int compzero = 0xFFFF;

最佳答案

它们都是有效声明,是的,因为没有语法错误。

但是,如果您的目的是获取 0 的补码(所有位取反),您应该使用:

unsigned int zero = 0;
unsigned int compzero = ~zero;

对于(例如)一个 32 位的 unsigned int0xffff~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/

相关文章:

c - 二维数组错误 - 使指针指向整数而不进行强制转换

C : Glut don't refresh the window, 为什么?

c - 将 'file' 作为 char* 存储在 'pure c source code' 中

c - 带有循环的 Makefile

c - 为什么我的输入重定向不起作用?

c++ - C++ 和 C 中的 union 初始化

c - 在 IDE 上完美运行时出现 "expected identified"错误

c - 为什么将结构地址转换为 int 指针、取消引用并将其用作语句中的 LVALUE 会使我的微 Controller 崩溃?

c - C 中支持长双浮点吗?

c - 如何从 C 结构体数组中初始化单个元素?