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/

相关文章:

java - 为什么 RTOS 只用 c 编码?

c - 将 char * 传递给结构

c++ - 在没有库函数的情况下获取进程 ID?

c - 十六进制数对于 long long int 来说太大了吗?

c++ - 导出序号而不带 def 文件

c - 我的字符串传递到 C 中的指针函数时出错?

c - Qemu-Arm 文件访问?

指针加法的 C 行为

c - AVR(调试)PWM 生成

c 编程 for 循环输入字符