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中的数据类型

相关推荐
技术与健康9 分钟前
企业使用Excel开展数据分析限制和建议完整版
经验分享
weixin_508821651 小时前
STM32在裸机(无RTOS)环境下,需要手动实现队列机制来替代FreeRTOS的CAN发送接收函数
stm32·单片机·嵌入式硬件
不不不丶6 小时前
STM32——I2C通讯(软件模拟)
stm32·单片机·嵌入式硬件
星辰pid8 小时前
stm32+esp8266+机智云手机app
stm32·单片机·嵌入式硬件
小峰编程9 小时前
谈Linux之磁盘管理——万字详解
linux·运维·服务器·经验分享·笔记·centos·运维开发
RaLi和夕11 小时前
单片机学习笔记8.定时器
汇编·笔记·单片机·嵌入式硬件·学习
flex888812 小时前
7款热门智能电视文件管理器横向评测
android·经验分享·智能电视
柒月玖.12 小时前
基于AT89C52单片机的植物浇水与智能空气土壤环境监测报警系统
单片机·嵌入式硬件
不不不丶13 小时前
STM32——ADC模数转换器
stm32·单片机·嵌入式硬件
weixin_5088216515 小时前
单片机软件设计文档模板
单片机·嵌入式硬件