编译器默认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中的数据类型