char表示有符号,还是无符号

编译器默认char是8位无符号数据类型,因此取值范围为0 ~ 255。如果在配置中设置"--signed_chars",char就是8位有符号数据,取值范围为-128 ~ 127。建议在以后程序设计中,使用编译器的默认配置,不建议搞不兼容的配置。如果不清楚,就用int8_t,s8,uint8_t和u8来声明变量。

1、按照默认配置,测试程序如下:

void test_function(void)

{

char Value; //声明有符号8位变量Value

char* pValue; //声明"signed char*指针变量"pValue

Value=1; //将1保存到变量Value中;

pValue=&Value; //读取Value的地址,然后将这个地址保存到指针变量pValue中;

(*pValue)++; //由于pValue是指向Value的存储单元,执行到此,Value=2;

}

2、如果需要将char指定为8位有符号的数据类型,配置如下:

设置"--signed_chars",测试程序如下:

void test_function(void)

{

char Value; //声明有符号8位变量Value

char* pValue; //声明"char*指针变量"pValue

Value=1; //将1保存到变量Value中;

pValue=&Value; //读取Value的地址,然后将这个地址保存到指针变量pValue中;

*pValue=-2; //由于pValue是指向Value的存储单元,执行到此,Value=2;

(*pValue)++; //由于pValue是指向Value的存储单元,执行到此,Value=-1;

}

3、MDK-ARM中的数据类型

相关推荐
captain_AIouo1 分钟前
深耕跨境赛道!autoAGC跨境AI,挖掘海外百亿增量红利
大数据·人工智能·经验分享·aigc
中屹指纹浏览器4 分钟前
2026浏览器本地缓存分区机制演进与沙箱缓存差异化运维探究
经验分享·笔记
纳祥科技7 分钟前
音频ADC芯片基础解析:为什么计算机需要它来理解真实世界?
网络·单片机·音视频·智能音箱
rit843249918 分钟前
STM32 入门 + 传感器采集 + 显示 综合实验
stm32·单片机·嵌入式硬件
数据库小学妹18 分钟前
MySQL 误删数据恢复全流程:Binlog 回放+全量备份+延迟从库三种方案实战
数据库·经验分享·mysql·dba
Industio_触觉智能26 分钟前
瑞芯微RK3576机器视觉场景之割草机+无人清扫车
嵌入式硬件·硬件工程·边缘计算·智能硬件·rk3576·割草机·rk3576j
0x3F(小茶)26 分钟前
STM32 Bootloader与OTA升级
c语言·stm32·单片机·嵌入式硬件·物联网
Wallystech-Linda27 分钟前
[特殊字符] How Mesh WiFi Is Tested: A Complete Engineering Validation Guide
嵌入式硬件
张_boss28 分钟前
从“成本中心”到“价值中心”:IT部门的价值突围
经验分享·笔记·程序人生
嵌入式-老费30 分钟前
esp开发与应用(数码管类应用)
嵌入式硬件