今天做到了个非常有意思的题目,是关于int最大最小值。用sizeof(int)查寻,返回四个字节,4个字节计算应该是4*8=32位,其中一位为符号位,且最高为不能为2所以应该减一,2^31-1=2147483648-1=2147483647同理负数也应存在-2147483647,但是当+2147483647+1此时最高为进一也能表示所以,负数最小值应该为-2147483648。

但是同样的我用sizeof(long int)去查询字节的时候竟然也是4字节,

去网上大神给出了以下结论

可用如sizeof(char),sizeof(char*)等得出

32位编译器:

char :1个字节

char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 4个字节

long long: 8个字节

unsigned long: 4个字节

64位编译器:

char :1个字节

char*(即指针变量): 8个字节

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 8个字节

long long: 8个字节

unsigned long: 8个字节

然而有去查编译器是否存在其他关系,是否64位操作系统可以运行32位编译器,也有 64位系统下编译器是32位的说法,后来又看到了Windows的64位,long是4byte , Linux下的64位,long是8byt,后又看到了字节数没变,变得是位数,48与416但是难道int跟long int不是一台电脑跑出来的,一个是48一个是416,感觉闹了笑话。决定字节做实验,发现

#include<iostream>
#include<cmath>
#include<iomanip>
#include<limits.h>
using namespace std;
int main()
{
long int a,b;
long int c;
long long int d;
cin>>a>>b;
c=d=a+b;
cout<<c<<endl<<d;
return 0;
}

发现无论跑多大的数都是一样的,莫不是long long int跟long int 和int一样大,后来检查程序发现c=d=a+b;将a+b的值赋给d,再将d的值赋给c不一样就鬼了。

于是换程序再跑

   #include<iostream>
#include<cmath>
#include<iomanip>
#include<limits.h>
using namespace std;
int main()
{
long int a,b;
long int c;
long long int d;
int e;
cin>>a>>b;
c=a+b;
d=a+b;
e=a+b;
cout<<c<<endl<<d<<endl<<e;
return 0;
}

跑出来cde的值都一样,又想起是不是long int 计算的结果值事long int。在换程序再跑。

#include<iostream>
#include<cmath>
#include<iomanip>
#include<limits.h>
using namespace std;
int main()
{
long int a,b;
long int c;
long long int d;
int e;
cin>>a>>b;
c=a+b;
d=a+b;
e=a+b;
cout<<c<<endl<<d<<endl<<e;
return 0;
}

输入2147483647 2147483647

输出-2

输入4294967294

输出-2

在尝试跑各种数字,发现大于2147483647 时c,e输出是一样的数字,其余的输出的是c,d,e都一样。

到目前从开始写这篇文章,到现在过去了快两个小时。查了部分资料,后来发现书上也给了资料说上述大神回复,跟编译器的位数有关,而网络上也分说不一,暂时以编译器mingw32是32为编译器收尾。而对于存储的位数,计算机的位数不要相信,课本不要相信,回帖也不要相信,应该用sizeof(long int)通过程序论证了sizeof的必然正确性,否定了某回帖的字节数不变位数改变的论述。

想去下一个visual studio x64版本去论证64位系统下编译器为32位的可能性。但是苦于在老家没有无线网络,只有手机热点,2.5G的大小有点吃不消,所以暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!

最新文章

  1. Linux测试环境搭建的学习建议
  2. [VM workstation]VM workstation 中的虚拟机连不上网络
  3. (转) 一步一步学习ASP.NET 5 (三)- 认识新的Web结构
  4. Rtp 协议实现网络广播台网络收音机
  5. new/delete和malloc/free的区别
  6. vs2012中怎样设为起始页,怎样取消
  7. [ionic开源项目教程] - 第15讲 ionic用户个人中心登录注册的实现
  8. WordPress网站更换老鹰主机详细操作
  9. IOS NSArray 倒序
  10. SQLite Lemon 语法分析器学习与使用
  11. VB6获取Chrome地址栏的URL信息
  12. Python choice() 函数
  13. 【手记】走近科学之为什么明明实现了IEnumerable&lt;T&gt;的类型却不能调用LINQ扩展方法
  14. 韩天峰《大话PHP设计模式》听课笔记
  15. 【搜索1】P1605 迷宫
  16. 计算属性(computed)、方法(methods)和侦听属性(watch)的区别与使用场景
  17. Uni2D 入门 -- Skeletal Animation
  18. POJ 2242
  19. API接口测试中需要注意的地方
  20. Android 之布局(一)

热门文章

  1. Unity Shader and Effects Cookbook问题记录
  2. javascript入门 之 ztree(二 标准json数据)
  3. mybatis源码分析--如何加载配置及初始化
  4. Java研发技术学习路线
  5. 09-soap接口类型进行测试webservice协议
  6. [安卓] 21、android studio 疑难杂症
  7. AJ学IOS(11)UI之图片自动轮播
  8. 如何用 Python 绘制玫瑰图等常见疫情图
  9. 如何让一张图片变成二值图像?python+opencv图像处理
  10. 数据结构与算法--二分搜索(binary search)