0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

char是有符号类型还是无符号类型?

学益得智能硬件 来源:学益得智能硬件 2024-03-17 10:15 次阅读

看一个C语言的笔试题,题目很简单,问char是有符号类型还是无符号类型?

看到这个题目的时候,我毫不犹豫的选择了一个错误答案。

在大部分人的认知中,C语言数据类型前面的signed是可以省略的,比如:

int a;
其实等价于:
signed int a;
也就是 a 表示有符号整型。 如果想要定义无符号整型,可以写成:
unsigned int a;
前面的 unsigned 不能省略。

但是 char 类型却除外。

写个代码测试一下,有符号 char 表示范围 -128 - 127,无符号 char 表示范围 0 - 255。

我们只要定义一个 char 类型等于 127,让他加一后,看结果大于 0 还是小于 0 就行。

先用 Ubuntu 里面的 gcc 来编译,结果是有符号数。

换成 arm-linux-gcc,在ARM架构的开发板上运行,结果是无符号数。

最后再来看下C标准,他把这种行为称为:
implementation defined
就是让编译器自己去决定,所以不同的环境下面,char表示的确实不一样。

如果考虑到移植,一定要谨慎使用。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7614

    浏览量

    137640
  • ARM架构
    +关注

    关注

    15

    文章

    177

    浏览量

    36415
  • char
    +关注

    关注

    0

    文章

    11

    浏览量

    3732
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3420

原文标题:char属于有符号还是无符号

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    关于verilog中的符号数和符号

    在数字电路中,出于应用的需要,我们可以使用符号数,即包括0及整数的集合;也可以使用符号数,即包括0和正负数的集合。在更加复杂的系统中,也许这两种
    的头像 发表于 11-18 17:46 1.7w次阅读

    跟着狄泰唐老师学C语言进阶教程的笔记之有符号符号

    ——> MIN_VALUEB. MIN_VALUE-1 ——> MAX_VALUE4. signed和unsignedl C语言中变量默认为符号类型l unsigned 关键字声明为
    发表于 05-16 21:43

    符号类型与整数文字不匹配

    什么吗? case和if / elsif之间区别吗?signal rx_count:unsigned(15 downto 0);case rx_count是当15 =>- 这就产生了“符号
    发表于 03-05 12:53

    双状态符号/符号数据类型

    双状态符号数据类型双状态符号数据类型四状态数据类型
    发表于 01-18 06:03

    C语言单片机编程为什么总是用符号的数据类型来定义

    注意:答案和题目均转自百度知道char型可以表示数的范围是-128到127,所占位数是8位int型可以表示数的范围是-32768到32767,所占位数是16位假如用符号的数据类型表示
    发表于 07-01 08:07

    stm32符号8位转换为int类型的方法是什么

    stm32符号8位转换为int类型的方法是什么
    发表于 12-20 07:14

    SpinalHDL的UInt与SInt数据类型能够进行符号/符号数操作

    在Bits的基础上,SpinalHDL提供了UInt、SInt数据类型,从而能够进行符号/符号数操作。变量定义/初始化UInt/SInt
    发表于 07-14 14:45

    高效的C编程之变量类型

    14.2 C编译器数据类型映射 C数据类型表示的意义 char符号8位字节数据 short
    发表于 10-17 16:50 3次下载
    高效的C编程之变量<b class='flag-5'>类型</b>

    fpga 符号数、符号

     在设计中,所有的算数运算符都是按照符号数进行的。如果要完成符号数计算,对于加、减操作通过补码处理即可用
    的头像 发表于 10-09 15:22 6123次阅读
    fpga <b class='flag-5'>有</b><b class='flag-5'>符号</b>数、<b class='flag-5'>无</b><b class='flag-5'>符号</b>数

    plc位、字节、字、双字、符号符号数据类型的关系

    plc位、字节、字、双字、符号符号的关系以下内容由深圳市综科智控科技开发有限公司编辑整理 2021/08/18前言:很多同学在PLC开发过程中,因为数据
    发表于 12-29 18:52 2次下载
    plc位、字节、字、双字、<b class='flag-5'>有</b><b class='flag-5'>符号</b>、<b class='flag-5'>无</b><b class='flag-5'>符号数据类型</b>的关系

    关于符号数据类型的示例

    我们学习一下Systemverilog中的符号数据类型的赋值。
    的头像 发表于 10-17 14:40 1067次阅读

    汇编基础知识教程之数据类型与寄存器

    数据类型 这是 ARM 汇编基础知识系列教程的第二部分,涉及数据类型和寄存器。 与高级语言类似,ARM支持对不同数据类型的操作。我们可以加载(或存储)的数据类型可以是
    的头像 发表于 01-30 15:06 1081次阅读
    汇编基础知识教程之数据<b class='flag-5'>类型</b>与寄存器

    PLC数据类型汇总表

    数据类型前面的U为符号,例如UINT为符号16位整数。INT位
    的头像 发表于 09-19 12:51 3441次阅读

    verilog中数据的符号属性(符号数和符号数)探究根源

    为了省流,还是先甩结论。符号数和符号数的最本质区别就是:符号位的识别和高位拓展。除此之外,另
    的头像 发表于 12-10 10:50 1706次阅读
    verilog中数据的<b class='flag-5'>符号</b>属性(<b class='flag-5'>有</b><b class='flag-5'>符号</b>数和<b class='flag-5'>无</b><b class='flag-5'>符号</b>数)探究根源

    原理图符号引脚的电气类型

    “  引脚是原理图符号中最重要的对象,在绘制引脚时,可以选择引脚的电气类型,比如输入、输出、高阻等。本文将介绍引脚电气类型的含义及其应用。   ” 引脚的电气类型
    的头像 发表于 11-12 12:20 663次阅读
    原理图<b class='flag-5'>符号</b>引脚的电气<b class='flag-5'>类型</b>