课程信息
课程名称:物联网/嵌入式工程师
章节名:第1周之C语言中的数据的存储与类型转换
课程内容概述
1. 数据在内存中的存储
1.1 有符号和无符号
signed 有符号数,可省略
unsigned 无符号数,不可省略
signed char a ; //char a; unsinged char b; signed int c; //int c; unsinged int d;
1.2 超出范围数据的计算方法
计算机中存储的是数据的补码,如果位数超过限长,会将低位的保留,自动去除高位的数据。
所以因为此会出现比较有趣的事情。
如:
#include <stdio.h> int main() { char a = 200; printf("a = %d\n",a); //-56 return 0; }
或
#include <stdio.h> int main() { unsigned char b = 280; printf("b = %d\n",b); //24 return 0; }
2. 强制类型转换
2.1 含义
强转类型: 采用某方方式将某种数据类型强制转换位我们需要的数据类型.
注:强转只是临时强转,本身的数据类型没有改变。
2.2 显示强转
格式: (需要强制的数类型)变量名
2.3 隐式强转
若是用户使用运算符两边的类型不匹配,并且用户没有显示的指定匹配那种类型。系统会默认触发隐式的强转,强转规则如下:
double ←←←←←←float 高
↑
↑
long
↑
↑
unsigned
↑
↑
int ←←←←←← char,short 低
学习心得
之前很多稀奇古怪的看似不合常理的输出,其实都有内部逻辑的,通过这两节的学习,哈哈,找到了内部的逻辑。