C语言进阶 一、数据的存储
0、 vs编译器debug和release版本的差异
void main()
{
int a = 0;
int b[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%p\n",&a);
printf("%p\n",b);
//数组越界导致死循环,vs编译器release版本会自动优化内存分配就不会出现死循环了,
//但是debug版本会照着代码顺序分配内存,就会金死循环
for(a = 0; a <= 11; a++)
{
b[a] = 0;
printf("ok\n");
}
}
字符的本质是ASCII码值,是整形
signed、unsigned 数据、数值(正负数的概念 )
1、整形存储
补码存储——数据截断——整形提升——源码显示
整形提升时看最高位
无符号数用来判断for循环,非常容易变成死循环
无符号做减法结果还是无符号数
(可以吧判断改为比较两个strlen的大小即可,或者把返回类型强制转换为int类型)
2、浮点型存储
往内存中存一个数据,再从改内存中取出,存取的方式是否一直会影响结果
浮点数的表示
浮点数可能表示不全,会存在误差
所以就存在了精度问题
浮点数存放
取浮点数