我最近创建了CHAR_BIT,并试图将其更改为9(或8以上的任何值)

#include <limits.h>

#define CHAR_BIT 9

事实上,当我print CHAR_BIT, it returns 9岁的时候(这是正确的).

但是,当我想使用一个字符,认为它会有一个更高的范围,它不是.Somehow it is still with 8 bits.

我做错什么了吗?或者只是不可能改变字符的位数?(我不这么认为,但IDK)

#include <stdio.h>
#include <limits.h>
#define CHAR_BIT 9

int main()
{
    unsigned char B = 260;
    printf("%d\n",B); //returns 4 (260-4->254, 8 bit char)
}

推荐答案

字节中的位数是底层硬件的属性,因此不能更改.

CHAR_BIT宏为您提供了一种以编程方式知道该值的方法.

C++相关问答推荐

传递给空闲的无效地址0x71 db7 cb5e0:未分配值

为指针 struct 创建宏

我无法让LLDB正确运行我的可执行文件

是否所有C编译器在将浮点数转换为整型数时都会隐式删除小数?

非常大的数组的大小

CSAPP微型shell 实验室:卡在sigprocmask

调用mProtection将堆栈上的内存设置为只读,直接导致程序SIGSEGV

C-使用指针返回修改后的整数数组

如何在POSIX-UEFI中获得输入?

在libwget中启用Cookie会导致分段故障

为什么未初始化的 struct 的数组从另一个数组获取值?

如果格式字符串的内存与printf的一个参数共享,会发生什么情况?

静态初始化顺序失败是否适用于C语言?

生产者消费者计数器意外输出的C代码

GETS()在C++中重复它前面的行

按字典顺序打印具有给定字符的所有可能字符串

通过char*访问指针的对象表示是未定义的行为吗?

C 错误:对 int 数组使用 typedef 时出现不兼容的指针类型问题

仅使用其内存地址取消引用 C 中的 struct

如何确保 gcc + libc 对于多字节字符串使用 UTF-8,对于 wchar_t 使用 UTF-32?