对于char型的,如果超出范围怎样算?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于char型的,如果超出范围怎样算?相关的知识,希望对你有一定的参考价值。

标准只给了一个最小应该表示的范围:
-127

127
头文件
limits.h
中定义了一些宏来表示本编译器所支持的范围
他们是:schar_min
schar_max,
类似地,你可以打开这个头文件找到其他的宏。
如果给
signed
char
类型的变量赋值溢出(即不在[schar_min,schar_max]范围之内),则按补码表示规则计算最终值。
参考技术A char字符的范围不是—128~127吗?
假如定义a=156
然后怎么输出
156,就是-100。

ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数

如将unsigned char code[]=2,3,3,'.',1,2,3,4,6,5
转为数223.123465
这是一个ARDUINO单片机方面的问题

用ARDUINO处理GPS数据遇到的问题
应该是数233.123465

如果unsigned char code[]=2,3,3,'.',1,2,3,4,6,5是unsigned char code[]='2','3','3','.','1','2','3','4','6','5';,那就很简单,如下——
#include "stdio.h"//
int main(void)
unsigned char code[]='2','3','3','.','1','2','3','4','6','5';
double x;
sscanf((char *)code,"%lf",&x);//转换
printf("%f\n",x);//打出来看看
return 0;

如果unsigned char code[]=2,3,3,'.',1,2,3,4,6,5中的数字不是字符,则——
#include "stdio.h"//
int main(void)
unsigned char code[]='2','3','3','.','1','2','3','4','6','5';
double x;
int i;//////////////////////////加上这4行调整一下
for(i=0;i<10;i++)
if(code[i]>=0 && code[i]<10)
code[i]+='0';//////
sscanf((char *)code,"%lf",&x);//转换
printf("%f\n",x);//打出来看看
return 0;

以上思路供参考。追问

好像不行啊

追答

用第二个代码的话,其中的unsigned char code[]='2','3','3','.','1','2','3','4','6','5';就应该是unsigned char code[]=2,3,3,'.',1,2,3,4,6,5;,我当时没有改过来。看我这里的执行结果——

追问

我是用ARDUINO 单片机来执行的,好像不行

参考技术A 可以帮你写

以上是关于对于char型的,如果超出范围怎样算?的主要内容,如果未能解决你的问题,请参考以下文章

char取值范围

超出有效内存范围的指针算术会产生啥危害?

将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。异常

将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围

4路解码器怎么算解码范围

CSS怎样不让图片高度超出屏幕