当前位置: 首页 > news >正文

拍卖网站怎么做武汉网络seo公司

拍卖网站怎么做,武汉网络seo公司,河南关键词seo,网站定制开发数据超过类型规定的大小怎么办 C语言中,如果需要用的整数大于int类型的最大值了怎么办? 我们知道int能表示的最大数是2147483647,最小的数是-2147483648,为什么? 因为字32位系统中,寄存器是32位的&#…

数据超过类型规定的大小怎么办

C语言中,如果需要用的整数大于int类型的最大值了怎么办?

我们知道int能表示的最大数是2147483647,最小的数是-2147483648,为什么?

因为字32位系统中,寄存器是32位的,寄存器中最高位表示符号位,0表示整数,1表示负数;

所以32位系统中int的最大值可以表示为0111 1111 1111 1111 1111 1111 1111 1111,这个二进制的数就是2147483647

程序示例1:

#include <stdio.h>int main()
{int i = 2147483647;short s = 32767;printf("i = %d\n",i);printf("s = %d\n", s);i = i + 1;s = s + 1;printf("i = %d\n", i);printf("s = %d\n", s);return 0;
}

输出结果:

i = 2147483647
s = 32767
i = -2147483648
s = -32768

结果是不是很奇怪,最大的数加1之后怎么都有个负号了,不可能,绝对不可能。

但是事实摆在面前了,什么原因?就是因为数据在内存中是怎么存储的问题了,前面说了,数据在内存中存储,默认最高位是符号位,默认存的数据就是有符号的;还有一个原因,正整数在内存中存的是源码,负整数在内存中存的是补码。数据到头之后再加1,你的数据极性就发生了翻转。

也就是说我们写的int ,编译器默认的是signed int;

signed int的数据范围是:-2147483648 ---- 2147483647

我们也可以主动声明数据类型,unsigned int无符号整型,内存里面的32位全部是数据,没有符号位了,那数据的范围就是:0 -- 4294967295

同理也就有了unsigned short、unsigned char。

收到启发,把

程序示例1的代码修改一下,加个unsigned进去

程序示例2:

#include <stdio.h>int main()
{unsigned int i = 2147483647; //无符号intunsigned short s = 32767; //无符号shortprintf("i = %d\n",i);printf("s = %d\n", s);i = i + 1;s = s + 1;printf("i = %d\n", i);printf("s = %d\n", s);return 0;
}

输出的结果感觉还是错的,

i = 2147483647
s = 32767
i = -2147483648
s = 32768

而且是short的数据是对的,int的数据是错的,怎么回事?

这是因为打印出了问题,我们打印的格式是%d,默认还是有符号的整型,那为什么short类型的数据是对的呢,因为short数据太小了,内存里面存数据是32位的,short类型数据还没有溢出。

程序需要进一步修改,打印数据类型改为%u,就是输出无符号整型了,

程序示例3:

#include <stdio.h>int main()
{unsigned int i = 2147483647;unsigned short s = 32767;printf("i = %d\n",i);printf("s = %d\n", s);i = i + 1;s = s + 1;printf("i = %u\n", i); //打印数据类型是%uprintf("s = %d\n", s);return 0;
}

输出的结果终于正常了

i = 2147483647
s = 32767
i = 2147483648
s = 32768

在单片机开发中,无符号的整型用得比较多。

数据在内存中的表现

char   占一个字节  数据范围   -128--127

short  占两个字节  数据范围  -32768--32767

int      占4个字节   数据范围   -2147483648 ---- 2147483647

要想知道变量或者类型所占用的内存大小,也就是占用几个字节,可以使用sizeof函数来查询,用法如下:

sizeof(变量);
sizeof(类型);
sizeof 变量;

程序示例4:

#include <stdio.h>int main()
{int s = sizeof(short);//short 类型占2个字节,s=2;int n = sizeof s;printf("s = %d\n", s); //s的值是2,类型是intprintf("n = %d\n", n); //n的值是4,return 0;
}

输出结果:

s = 2
n = 4

把常见的类型所占内存的情况都可以打印出来看看

程序示例5:

#include <stdio.h>int main()
{printf("char类型变量占用 %d个字节\n", sizeof(char)); printf("short类型变量占用 %d个字节\n", sizeof(short));printf("int类型变量占用 %d个字节\n", sizeof(int));printf("float类型变量占用 %d个字节\n", sizeof(float));printf("double类型变量占用 %d个字节\n", sizeof(double));return 0;
}

输出结果:

char类型变量占用 1个字节
short类型变量占用 2个字节
int类型变量占用 4个字节
float类型变量占用 4个字节
double类型变量占用 8个字节

程序示例6:

#include <stdio.h>int main()
{printf("无符号char类型变量占用 %d个字节\n", sizeof(unsigned char)); printf("无符号short类型变量占用 %d个字节\n", sizeof(unsigned short));printf("无符号int类型变量占用 %d个字节\n", sizeof(unsigned int));return 0;
}

输出结果:

无符号char类型变量占用 1个字节
无符号short类型变量占用 2个字节
无符号int类型变量占用 4个字节

以上说明无符号整数与有符号整数所占的内存是一样的。

奇怪的数据类型

有short就有long,但是这个long在不同的编译器里面结果却是不一样的

long一般是占4个字节,但也可能占8个字节;

还用奇葩的类型,long long,也就是long long int的简写,占8个字节;

程序示例7:

#include <stdio.h>int main()
{printf("long类型变量占用 %d个字节\n", sizeof(long)); printf("long long类型变量占用 %d个字节\n", sizeof(long long));return 0;
}

输出结果:

long类型变量占用 4个字节
long long类型变量占用 8个字节

http://www.hrbkazy.com/news/19663.html

相关文章:

  • 网站嵌入视频代码网络运营工作内容
  • 哪里长沙网站开发有什么引流客源的软件
  • 高密住房和城乡建设厅网站淘宝seo优化
  • 建立主题网站的顺序是打广告去哪个平台
  • 长沙网站建设哪家好网络建站优化科技
  • wordpress自己写特效邵阳seo优化
  • 网站服务器维护需要多久上海aso苹果关键词优化
  • 金华做网站报价2020站群seo系统
  • 网站建设服务器需要钱吗网络营销软件商城
  • 网站建设指的是什么上海网站推广广告
  • 阿里云服务器可以做几个网站湖南seo网站策划
  • 外贸企业百度首页关键词优化
  • 网站h1竞价推广出价多少合适
  • 镇江网站建设个自助建站
  • 学做网站要学什么语言seo推广怎么学
  • 网站开发的好处优优群排名优化软件
  • asp.net做网站的优势crm网站
  • 北京网站开发培训班seo怎么做排名
  • 万网没备案怎么做网站营销工具
  • 那里有个人做网站的推广软件赚钱
  • 设计本子封面广州网站优化公司如何
  • 视频网站备案怎么做南昌seo技术外包
  • 在线网站制作工具客户营销
  • 怎样在国外网站购买新鲜橙花做纯露搜外网
  • 个人网站怎么申请注册广州seo排名收费
  • 长沙做暑假实践活动网站免费建站哪个比较好
  • 做问答网站要多少钱外贸建站网站推广
  • 免费的网站客服软件开网站怎么开
  • 企业网站推广论述网站流量分析
  • 网站推广方案中网站关键词优化公司哪家好