为什么在C语言中char是1个字节(Why char is of 1 byte in C language)

为什么C中的char长度为1个字节? 为什么它不是2个字节或4个字节长?

它保持1字节的基本逻辑是什么? 我知道在Java中char是2个字节长。 同样的问题。

Why is a char 1 byte long in C? Why is it not 2 bytes or 4 bytes long?

What is the basic logic behind it to keep it as 1 byte? I know in Java a char is 2 bytes long. Same question for it.

原文:https://stackoverflow.com/questions/30166112

更新时间:2019-11-05 01:15

最满意答案

C char是1个字节,因为它是在标准中指定的。

最可能的逻辑是。 char (标准字符集)的(二进制)表示可以适合1个字节。 在C的主要开发时,最常用的标准是ASCII和EBCDIC ,它们分别需要7位和8位编码。 所以, 1个字节就足以表示整个字符集。

OTOH,在Java开始的时候,扩展charcater集和unicode的概念出现了。 因此,为了保证未来的可扩展性, char被赋予了2 bytes ,它能够处理扩展的字符集值。

char is 1 byte in C because it is specified so in standards.

The most probable logic is. the (binary) representation of a char (in standard character set) can fit into 1 byte. At the time of the primary development of C, the most commonly available standards were ASCII and EBCDIC which needed 7 and 8 bit encoding, respectively. So, 1 byte was sufficient to represent the whole character set.

OTOH, during the time Java came into picture, the concepts of extended charcater sets and unicode were present. So, to be future-proof and support extensibility, char was given 2 bytes, which is capable of handling extended character set values.

2015-05-11

相关问答

BYTE不是C语言或C标准库的一部分,因此它完全依赖于是否在包含标准stdio.h头文件之后定义它。 在许多确定BYTE宏的系统上,它通常是一个unsigned char 。 从const char*转换为unsigned char*将需要显式强制转换。 BYTE isn't a part of the C language or C standard library so it is totally system dependent on whether it is defined after

...

C char是1个字节,因为它是在标准中指定的。 最可能的逻辑是。 char (标准字符集)的(二进制)表示可以适合1个字节。 在C的主要开发时,最常用的标准是ASCII和EBCDIC ,它们分别需要7位和8位编码。 所以, 1个字节就足以表示整个字符集。 OTOH,在Java开始的时候,扩展charcater集和unicode的概念出现了。 因此,为了保证未来的可扩展性, char被赋予了2 bytes ,它能够处理扩展的字符集值。 char is 1 byte in C because it

...

对于非拉丁字符,您应该使用XmbLookupString , XwcLookupString或Xutf8LookupString请参阅手册页以获取详细信息。 For non-latin characters you should be using one of XmbLookupString, XwcLookupString or Xutf8LookupString see the manual page for details.

char和int类型等都没有在任何头文件中定义。 它们以类型构建 ,这意味着它们是核心语言的一部分。 他们的定义被硬编码到编译器本身。 至于编译器如何定义这些类型,这是由C标准决定的。 int和char的定义可以在6.2.5节(类型)中找到。 例如, char的定义: 3声明为char类型的对象足够大,可存储基本执行字符集的任何成员。 如果基本执行字符集的成员存储在char对象中,则其值保证是非负的。 如果任何其他字符存储在char对象中,则结果值是实现定义的,但应位于可以用该类型表示的值的范围内

...

你的问题似乎有点困惑。 你想简单地将一个浮点数组解释为一个char数组(比如写一个文件吗?)。 如果是这样,只需施放。 C中的所有指针都可以用char *表示。 memcpy将从一个内存位置复制到另一个内存位置。 但请仔细跟踪您的“len”参数是浮点数还是字节数。 如果“len”是数组中的浮点数,则将它与memcpy调用中的sizeof(float)相乘。 Your question seems a bit confused. Do you want to simply interpret an

...

这必须手动完成。 您必须分配一个新的**C.char类型并循环遍历[][]byte切片中的每个元素,以将其分配给新列表。 这涉及将**C.char指针偏移每次迭代的正确大小。 这是一个执行此操作的示例程序。 如下面的评论所示,如果您打算在C中使用类似printf打印char *列表,请确保输入字符串为NULL终止。 理想情况下,使用C.CString()函数转换它们。 这假设它们被视为字符串。 否则,您可能还需要提供一种方法将每个char *列表的长度传递给C函数。 package main

/

...

他们是一样的: C11§6.7.9初始化 字符类型数组可以由字符串文字或UTF-8字符串文字初始化, 可选地用大括号括起来。 字符串文字的连续字节(如果有空间或数组大小未知,则包括终止空字符)初始化数组的元素。 They are the same: C11 §6.7.9 Initialization An array of character type may be initialized by a character string literal or UTF−8 string literal,

...

是的,这是一种完全有效的方法。 在大多数情况下, char可以像整数一样处理 - 因此你也可以对char类型的变量进行算术运算。 Yes, that's a completely valid method. char can be treated like an integer in most cases - and as such you can also do arithmetic on variables of type char.

实际上, char *和unsigned char *类型大小不是1个字节,而是4个字节,假设我们正在讨论win32应用程序:那些是指针,并且所有指针具有相同的大小,而不管数据的大小是多少指着。 当P / Invoke机制将“简单值”数组视为函数参数时,它很乐意将指向数组开头的指针提供给下面的C函数。 毕竟,所有它真正知道关于DLL中的信息的C函数是它的代码开始的地方。 据我所知,参数的数量和类型没有在符号名称中编码,因此它信任您提供的信息。 这意味着即使你给它一个int数组,实际调用C函数也会有

...

VARCHAR是Pro * C预编译器添加的特殊类型,它不存在于基本C语言中。 但是,在C中,如果我没有弄错的话,您可以将VARCHAR变量作为结构访问。 The VARCHAR is a special type added by the Pro*C pre-compiler, it doesn't exist in the base C language. However, in C you can access a VARCHAR variable as a structure if I'm

...

c语言char几个字节为什么,为什么在C语言中char是1个字节(Why char is of 1 byte in C language)...相关推荐

  1. c语言中用两个n表示什么格式,C语言中‘\n'为什么能表示CRLF两个字节

    为什么要说这个简单的问题? 众所周知,在Windows下文本文件的换行符是CRLF,占两个字节.在Unix下是LF,占一个字节.(还有奇葩的Mac是CR).但是C语言中直接printf一个 '\n', ...

  2. c语言int2字节负数类型范围,c语言中int范围是多少?

    C语言中int的取值范围是:"-2147483648 ~ 2147483647".int类型在C语言中占4个字节,即32个二进制位:当表示正数时,最高位为符号位(0):当表示负数时 ...

  3. C语言程序设计double,C语言中double类型数据占字节数为

    1以下选项中,能用作数据常量的是________. A.o115 B.0118 C.115L D.1.5e1.5 2下列叙述中错误的是_______. A.一个C语言程序只能实现一种算法 B.一个C函 ...

  4. c语言中int占两个字节short,选择.设C语言中,int类型数据占2个字节,则short类型数据占几个字节...

    short是占两个字节. short在C语言中是定义一种整型变量家族的一种,shorti:表示定义一个短整型的变量i. 依据程序编译器的不同short定义的字节数不同,标准定义short短整型变量不得 ...

  5. C语言中int占几个字节,指针占几个字节,由什么决定呢?

    int占几个字节 今天心血来潮,想要了解一下C语言中各整型占用几个字节. 先上代码测试两个环境: #include<stdio.h> #include<stdlib.h>int ...

  6. java 英文字符 字节_3、在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节。...

    [判断题]中心原子中的几个原子轨道杂化时,必形成数目相同的杂化轨道. [单选题]集合 用区间表示正确的是 ( ) [单选题]15.Java语言的类间的继承关系是 [单选题]8.编译Java Appli ...

  7. c语言4钟存储类型关键字用法,求C语言中的32个关键字及其意思? C语言中32个关键字的意思和用法~!...

    C语言中的32个关键字及其意思如下: 1.auto    声明自动变量 2.short    声明短整型变量或函数 3.int    声明整型变量或函数 4.long    声明长整型变量或函数 5. ...

  8. char* 赋值 const char* 释放_C/C++编程笔记:C语言中 const 关键字的作用及解析,值得收藏!...

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小. 为了满足这一要求,可以使用const关键字对变量加以限定: c ...

  9. 在java语言中 ()方法是不可以继承的_Java 语言中,构造方法是不可以继承的。( )_学小易找答案...

    [简答题]需求分析完整话术 [简答题] [单选题]适用于场地面积有限,集装箱吞吐量较大的水陆联运码头的起重机系统是( )系统 [单选题]利用叉车或半挂车.汽车承载货物,连同车辆一起开上开下船,到达目的 ...

  10. c语言switch语句支持的字符有哪些,C语言中switch()语句的括号内可以是什么型别的呢?...

    C语言中switch()语句的括号内可以是什么型别的呢?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中swit ...

最新文章

  1. 应该知道关于Python的随机模型 以及使用范围例子洗牌 特别长 1米
  2. java 自定义函数_jxTMS--java与python的协作
  3. SimpleDateFormat线程不安全
  4. mvp架构 java_GitHub - AnthonyCoder/MvpForJava: 一个可直接快速引入的 Java 版本的模块化 MVP 框架...
  5. 8.2.4临时表和正式表
  6. 块级元素(导航,图片,层)的水平和垂直居中
  7. Python3异常处理
  8. 5种样式实现div容器中三图摆放实例对比说明
  9. 6月第4周全球域名注册商(国际域名)新增注册量TOP22
  10. gitee合并分支_Gitee在线解决代码冲突功能上线,无需手动修改轻松解决冲突
  11. 爬虫之异步爬虫asyncio
  12. 逍遥魔兽手动打开mysql_逍遥魔兽gm命令使用
  13. 2020 Jiangsu Collegiate Programming Contest-A.Array
  14. python中label组件参数_【Python64-tkinter_label组件】
  15. mybatis Parameter ‘XXX‘ not found
  16. 立此存照:杨振宁 VS 邓稼先 (转贴)
  17. 用一个例子说明什么是多态
  18. Process-wide API spying - an ultimate hack 摘要翻译(一)
  19. 百度paddlepaddle七天打卡之青你实战
  20. 基于博客系统的访客日志记录

热门文章

  1. rabbitmq 存入mysql_将RabbitMQ使用者数据保存到数据库中
  2. 技术管理角度看C++游戏程序员发展
  3. 关于iOS7越狱的整理
  4. java 读取gzip_Java读取GZIP
  5. STM32MP157 三角函数运算花费时间比较
  6. 关于虚拟机中的HWADDR和MACADDR地址
  7. unity reflect_Unity Reflect在这里
  8. 1.从第一道面试题谈起
  9. 百度编辑器上传图片地址+上域名,让上传图片保存全路径
  10. layui导入模板数据_使用layui模板填充页面数据