|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > 后端技能提升 > int(1),int(10)和int(11)有什么区别?
int(1),int(10)和int(11)有什么区别?

int(1),int(10)和int(11)有什么区别?

日期:2023-11-05 浏览量:200 原创作者:湖八爷
这是一个经常在面试中会被问到的细节问题。

很多小伙伴看到括号里面的长度值不同,会直接联想到字符类型括号里面的长度,以为括号里面的长度值不同,存储的数值范围也会不同。


其实这是非常错误的联想,因为对于整数类型来说,括号里面的长度值不同,仅仅代表显示长度不同,并不会影响实际的存储范围

也就是说int(1),int(10)和int(11)这三个不仅占用的空间是一样的【都是占用4个字节】,储值范围也是一样的【int(1)无符号的情况下一样可以存储0到4294967295中的任意一个数值】。


那上面提到的显示长度不同是什么意思呢?

不知道大家平时用Navicat设计表添加和修改字段的时候有没有注意到“填充零”这个选项?


填充零.png


“填充零”这个选项只有当字段类型为数值类型的时候才能选择是否勾选,勾选了“填充零”选项的字段多了一个zerofill属性(该属性会判断储存的数值位数,如果储存的数值位数小于指定的长度,则会在该数值左侧填充0,使其达到指定长度;如果储存的数值位数大于或等于指定的长度,则不会进行填充0的操作)。


例如:储存99这个数值,当字段都勾选了“填充零”选项(也就是设置了zerofill属性)的时候

int(9),显示结果为000000099
int(3),显示结果为099
int(1),显示结果为99


而当字段没勾选“填充零”选项的时候

int(9),显示结果为99
int(3),显示结果为99
int(1),显示结果也是99



最后总结一下:数值类型设置不同长度【如:int(1),int(10)和int(11)】,如果没有设置zerofill属性(就是勾选“填充零”),那么它们没有任何区别;如果设置了zerofill属性,也就是显示长度不一样而已。