首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C中的int是否自动初始化为0?

目标C中的int是否自动初始化为0?
EN

Stack Overflow用户
提问于 2014-05-01 02:54:05
回答 2查看 668关注 0票数 1

我正在读一本书,名为“编程的目标-C”,第六版,斯蒂芬G.科尚。它在第144页有以下声明,使我感到困惑:

作为基本C数据类型的局部变量没有默认值,因此必须在使用它们之前将它们设置为某个值。

但是,当我有以下代码时,它仍然工作,并显示0:

代码语言:javascript
复制
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    int number;
    NSLog(@"%i", number);

    return 0;
}

int不是一个基本的C数据类型吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-01 02:59:16

"Basic数据类型没有缺省初始值“,这并不意味着如果不初始化它们,它们就不会有一个值,只是你不会事先知道这个值是什么。

在您的例子中,这个number恰好有一个零,但是它可能有其他的值。

票数 8
EN

Stack Overflow用户

发布于 2014-05-01 03:19:01

在堆栈上分配局部变量。局部变量的初始值没有保证值。相反,局部变量的值完全取决于使用堆栈的特定区域的前一个函数所留下的任意值。

对于main函数,局部变量的初始值可能看起来是可预测的,因为main是第一个运行和使用堆栈区域的函数。然而,编译器不费吹灰之力,语言规范也不需要保证局部变量的初始值。

总之,始终在使用局部变量之前显式初始化它们。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23401353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档