专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

定义int变量时靠近char的变量会变成0_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 1:57:05       共计:3594 浏览

定义int变量时靠近char的变量会变成0?

程序员最常见到的口头禅是,“这个问题好奇怪”,“在我机器上好好的!!!” ....

所以,题主的问题根本就不是一个问题。遇到类似问题,应该先从自己代码本书找原因,而不是去怀疑语言或者编译器。原因很简单,这些东东都几十年了,要是有这么简单的Bug早就被发现了。

由于题主没有贴出自己的代码,因此没办法帮题主分析问题在哪,但是在实际开发中有很多原因会导致题主所说的问题。我们举几个例子。

局部变量与全局变量

局部变量默认是不会被初始化的,因此当访问局部变量的时候其值是一个随机值,可能是0,也可能是其它值。

但是全局变量如果没有被显示初始化的情况下,是一定被初始化为0的。因此如果你得代码是这样的,那么itest的输出值一定是0,而test则不一定。所以你觉得int变量在靠近char的时候会变成0,其实没有因果关系。

内存访问越界

另外一种情况是访问越界的问题,如果你char类型的变量存在访问越界的问题,可能会把邻居的变量给覆盖了,从而导致认为的结果。同样,我们来看一个例子。

如图所示,图中的gtest变量,你本来以为是9的,但实际打印的时候却是0.这就是因为在对ctest清零的时候越界造成的。

类似的问题还很多,当我们遇到问题的时候还是要尽量从代码本身找问题,这样更容易一些。至于编译器,肯定是有Bug的,估计我们遇到的可能性不会太大。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:TCP到底怎样流量控制的_java | ·下一条:实施多系统单点登录的前提是什么_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有