今天做到了个非常有意思的题目,是关于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的大小有点吃不消,所以暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!暂且保留问题!!!

2019年2月5日训练日记关于int字节数,long int 字节数的讨论的更多相关文章

  1. Visual Studio 2019 发布活动 - 2019 年 4 月 2 日

    Visual Studio 2019 发布活动 2019 年 4 月 2 日,星期二 | 上午 9:00 (PT) 围观: https://visualstudio.microsoft.com/zh- ...

  2. 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?

    2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm   据泰尔终端实验室公众微信 ...

  3. 2019年3月2日-小雨.md

    2019年3月2日, 星期六 开学已经一周了,时间好像限制了自己进步的脚步,一个人的精力有限,想做好方方面面实在是太难了,有很多事儿最后都没做的完美.相反,自己应该放下繁琐的包袱,简简单单的干一件事儿 ...

  4. 2019年5月22日 AY 程序员调侃语录

    我是AY,杨洋,做wpf开发的,最近得了一种病,程序员患得患失综合征.同事说,我年纪在变大,技术跟不上.业余之间,我原创了写了一些语录,给大家中午休息,累疲惫的时候,开心放松下. 1.活着的每一天都无 ...

  5. 【2019年05月20日】A股滚动市盈率PE历史新低排名

    2010年01月01日 到 2019年05月20日 之间,滚动市盈率历史新低排名. 上市三年以上的公司, 2019年05月20日市盈率在300以下的公司. 1 - 阳光照明(SH600261) - 历 ...

  6. SPSS 2019年10月24日 今日学习总结

    2019年10月24日今日课上内容1.SPSS掌握基于键值的一对多合并2.掌握重构数据3.掌握汇总功能 内容: 1.基于键值的一对多合并 合并文件 添加变量 合并方法:基于键值的一对多合并 变量 2. ...

  7. 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)

    下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw  密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...

  8. 34.ITerm配置使用——2019年12月24日

    2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...

  9. 36.React基础介绍——2019年12月24日

    2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...

随机推荐

  1. "图片组件"组件:<pic> —— 快应用组件库H-UI

     <import name="pic" src="../Common/ui/h-ui/media/c_pic"></import> & ...

  2. leetcode c++做题思路和题解(3)——栈的例题和总结

    栈的例题和总结 0. 目录 有效的括号 栈实现队列(这个参见队列) 1. 有效的括号 static int top = 0; static char* buf = NULL; void stack(i ...

  3. AJ学IOS 之CoreLocation地理编码小Demo输入城市得到经纬度

    AJ分享,必须精品 一:效果 输入地名,可以得到相应的经纬度,知识为了学习写的小Demo 二:实现步骤 一 :首先获取用户输入的位置. 二 :创建地理编码对象. 三 :利用地理编码对象编码,根据传入的 ...

  4. Cilium使用 (Cilium 3)

    使用k3s测试Cilium,安装步骤可以参见官方文档 Cilium安装使用 docker安装 使用如下命令安装最新版本的docker yum install -y yum-utils \ device ...

  5. Python工业互联网监控项目实战3—websocket to UI

    本小节继续演示如何在Django项目中采用早期websocket技术原型来实现把OPC服务端数据实时推送到UI端,让监控页面在另一种技术方式下,实时显示现场设备的工艺数据变化情况.本例我们仍然采用比较 ...

  6. 使用 PyQt5 实现图片查看器

    一.前言 在学习 PyQt5 的过程中我会不断地做一些小的 Demo,用于让自己能够更好地理解和学习,这次要做的就是一个图片查看器,主要功能包括打开图片.拖动图片.放大和缩小图片. 最终实现的图片查看 ...

  7. day5 作业

    tips:作业 作业: 0.分别画出下面两个列表在内存中是如何存放的 l1=[11,22,[333,444]] l2=[11,22,[33,{'name':'egon','age':18}]] ''' ...

  8. SMTP发邮件(直接可用)实例

    string file = "邮件测试.txt";//放在Debug下的一个txt文件. MailAddress from = new MailAddress("自己的邮 ...

  9. kubernetes的cni0和flannel.1的关系?

    当容器运行之后,节点之间多了个虚拟接口cni0,它是由flanneld创建的一个虚拟网桥叫cni0,供pod本地通信使用.flanneld为每个pod创建一对veth虚拟设备,一端放在容器接口上,一端 ...

  10. 推荐web前端框架bootstrap

    bootstrap是基于Jquery而开发的一个前端框架. 全中文的学习网站:http://www.runoob.com/bootstrap/bootstrap-tutorial.html 实际上就是 ...