2019年2月5日训练日记关于int字节数,long int 字节数的讨论
今天做到了个非常有意思的题目,是关于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 字节数的讨论的更多相关文章
- Visual Studio 2019 发布活动 - 2019 年 4 月 2 日
Visual Studio 2019 发布活动 2019 年 4 月 2 日,星期二 | 上午 9:00 (PT) 围观: https://visualstudio.microsoft.com/zh- ...
- 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?
2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm 据泰尔终端实验室公众微信 ...
- 2019年3月2日-小雨.md
2019年3月2日, 星期六 开学已经一周了,时间好像限制了自己进步的脚步,一个人的精力有限,想做好方方面面实在是太难了,有很多事儿最后都没做的完美.相反,自己应该放下繁琐的包袱,简简单单的干一件事儿 ...
- 2019年5月22日 AY 程序员调侃语录
我是AY,杨洋,做wpf开发的,最近得了一种病,程序员患得患失综合征.同事说,我年纪在变大,技术跟不上.业余之间,我原创了写了一些语录,给大家中午休息,累疲惫的时候,开心放松下. 1.活着的每一天都无 ...
- 【2019年05月20日】A股滚动市盈率PE历史新低排名
2010年01月01日 到 2019年05月20日 之间,滚动市盈率历史新低排名. 上市三年以上的公司, 2019年05月20日市盈率在300以下的公司. 1 - 阳光照明(SH600261) - 历 ...
- SPSS 2019年10月24日 今日学习总结
2019年10月24日今日课上内容1.SPSS掌握基于键值的一对多合并2.掌握重构数据3.掌握汇总功能 内容: 1.基于键值的一对多合并 合并文件 添加变量 合并方法:基于键值的一对多合并 变量 2. ...
- 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)
下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw 密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...
- 34.ITerm配置使用——2019年12月24日
2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...
- 36.React基础介绍——2019年12月24日
2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...
随机推荐
- kepp running 团队视频分析初步总结
一.遇码则码队视频讨论: 时 间:2020.03.31 方 式:视频会议 参加人员:温学智,胡海靖,莫佳亮 二.视频讨论会议截图: 三.纪要内容: (1).主要功能和界面显示: 温学智:在 ...
- ubuntu18.04配置宽带上网
1.将 /etc/NetworkManager 目录下的 managed标签改为true 2.将 /etc/network/ 目录下的 interfaces文件只留下前两行: auto lo ifac ...
- 09-soap接口类型进行测试webservice协议
webxml.com.cn/zh_cn/weather_icon.aspx webxml.com.cn/webservices/weatherWS.asmx? 以上2个url可用来免费使用(经典场景) ...
- ftl中几个特殊的用法
@ 注意${}为变量的渲染显示,即先计算后打印出来,而<>里面为定义等操作符的定义 ,而首尾2个<>中间部分一般为计算打印部分 @数据模型中如果不是以map数据来封装的,而是直 ...
- 【题解】LOJ2462完美的集合(树DP 魔改Lucas)
[题解]LOJ2462完美的集合(树DP 魔改Lucas) 省选模拟考这个??????????????????? 题目大意: 有一棵树,每个点有两个属性,一个是重量\(w_i\)一个是价值\(v_i\ ...
- 【Tool】使用IDEA创建简单的Java项目
IDEA创建简单的Java项目 打开IDEA进入首页面,点击 Create New Project 点选第一项就是了,SDK就是我们的JDK,,这里我已经装好了JDK和JDK的环境变量 IDEA就能自 ...
- java 第七周课后作业0417
定义一个矩形类Rectangle:(知识点:对象的创建和使用)1 定义三个方法:getArea()求面积.getPer()求周长,showAll()分别在控制台输出长.宽.面积.周长.2 有2个属性: ...
- 怎么用python 3 开发钉钉群机器人
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python绿色通道 PS:如有需要Python学习资料的小伙伴可以加 ...
- stand up meeting 1--11
今天国庆同学回中科大考试因此缺席了今天的daily scrum.不过国庆的任务已经基本完成,不会影响项目进度. 今日更新: 分享功能已经完成一个版本,如下图为分享至邮件: 针对AP返回结果中没有Wor ...
- 基础_TCP/IP
概念明确: 1:TCP/IP代表传输控制协议/网际协议,指的是一系列协议 为什么会叫TCP/IP.因为用的多, 2:HTTP 是属于应用层的协议 3:OSI七层模型和TCP/IP 平等,只是TCP/ ...