C语言中定义int变量,默认值是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中定义int变量,默认值是多少相关的知识,希望对你有一定的参考价值。

如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值。

区分变量的类型,有两种情况。

1、局部变量。

局部变量在没有显式初始化时,其值C语言规范没做要求,可以是随机值,也可以是编译器随意给定的值。

比如gcc编译器的局部变量就是随机值,可能为任何值。而微软的编译器,如VC或VS,则会初始化为全c,即0xCCCCCCCC。

2、全局变量或静态局部变量。

所有的全局变量,即定义在函数外的变量,默认值为0。

所有的静态局部变量,即定义在函数内部的static int name形式的,默认初始化为0。

扩展资料:

int是一种数据类型,在编程语言(C、C++、C#、Java等)中,是用于定义整数类型变量的标识符。

目前在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]

在之前的微型机中,int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1]

定义方法:

int i;//定义整形变量i

int i=1;//定义整形变量i并初始化为1

定义常量:

const int i;//编译错误,因为常量需要给予一个初值

const int i=1;//定义常量i,值为1

Java定义常量:

final int i=1;//定义常量i,值为1

参考资料来源:百度百科-INT (数据类型)

参考技术A 区分变量的类型,有两种情况。
1 局部变量。
局部变量在没有显式初始化时,其值C语言规范没做要求,可以是随机值,也可以是编译器随意给定的值。
比如gcc编译器的局部变量就是随机值,可能为任何值。而微软的编译器,如VC或VS,则会初始化为全c,即0xCCCCCCCC。

2 全局变量或静态局部变量。
所有的全局变量,即定义在函数外的变量,默认值为0。
所有的静态局部变量,即定义在函数内部的
static int name;
形式的,默认初始化为0。
参考技术B 如果是定义的全局变量或者静态变量,未初始化的话就是0.如果是局部变量,那就是以前残留在堆栈里的随机值。本回答被提问者和网友采纳 参考技术C c不负责初始化空间 参考技术D 如一楼

可空类型“int”的默认值是多少? (包括问号)?

【中文标题】可空类型“int”的默认值是多少? (包括问号)?【英文标题】:What is the default value of the nullable type "int?" (including question mark)? 【发布时间】:2015-05-23 02:42:31 【问题描述】:

在 C# 中,int? 类型的类实例变量的默认值是多少?

例如,在下面的代码中,如果MyNullableInt 从未被显式赋值,它会有什么值?

class MyClass

    public int? MyNullableInt;

(似乎答案几乎可以肯定是null0,但它是哪一个?)

【问题讨论】:

为什么投反对票? (如果没有实际运行代码来测试行为,这个问题的答案最初对我来说并不明显;令人惊讶的是,我在 *** 上找不到这个问题的副本,或者通过谷歌在其他地方很容易找到。) 你可能看过here - 谷歌第一次为我点击。 @500 - 我在研究时确实找到了那篇文章 - 实际上我在下面自己的答案中链接到了它 - 但据我所知,这篇文章并没有明确说明可空类型实例的默认值为空。它确实说“HasValue 的默认值为 false。Value 属性没有默认值”,但这并不能直接回答我最初的问题,而无需进行一些额外的挖掘。 我想知道是不是因为你可以设置一个断点看看值是多少,或者在即时窗口中输入int? x; 看看结果是什么? 【参考方案1】:

int? 的默认值 - 以及任何使用“type?”的可空类型声明——是null

为什么会这样:

int? 是类型 Nullable<T>(其中 T 是 int)的语法糖,一个结构。 (reference) Nullable&lt;T&gt; 类型有一个bool HasValue 成员,当false 时,它使Nullable&lt;T&gt; 实例“表现得像”null 值。特别是,当带有HasValue == falseNullable&lt;T&gt; 与实际的null 值进行比较时,Nullable<T>.Equals method 被覆盖以返回true。 从C# Language Specification 11.3.4 开始,结构实例的初始默认值是该结构的所有值类型字段设置为其默认值,并且该结构的所有引用类型字段设置为null。 C# 中bool 变量的默认值为false (reference)。因此,默认Nullable&lt;T&gt; 实例的HasValue 属性为false;这反过来又使 Nullable&lt;T&gt; 实例本身的行为类似于 null

【讨论】:

当我将声明从 int? x = null; 更改为 int? x; 时,我在代码中进一步收到编译器错误:“使用未分配的局部变量 x”。 @JohnPick 这是一个 C# 编译器功能,旨在防止由于您在使用变量之前“忘记”初始化变量而可能出现的错误。您可以遇到未初始化的 int 的情况?是当它是类成员变量时。两者的例子:blogs.msdn.microsoft.com/abhinaba/2005/11/08/… 所以基本上这个地方就是你的科技博客?您提出的问题只需要运行代码即可获得答案,然后在同一分钟内自己回答问题。 @JonSchneider 很公平,我的错 VS 的编译器提示/警告具有误导性:Field 'id' is never assigned to, and will always have its default value 0。是不是很奇怪?【参考方案2】:

我觉得分享Nullable&lt;T&gt;.GetValueOrDefault() 方法很重要,该方法在处理使用Nullable&lt;int&gt; 又名int? 值的数学计算时特别方便。很多时候你不需要检查HasValue属性,你可以使用GetValueOrDefault()来代替。

var defaultValueOfNullableInt = default(int?);
Console.WriteLine("defaultValueOfNullableInt == 0", (defaultValueOfNullableInt == null) ? "null" : defaultValueOfNullableInt.ToString());

var defaultValueOfInt = default(int);
Console.WriteLine("defaultValueOfInt == 0", defaultValueOfInt);

Console.WriteLine("defaultValueOfNullableInt.GetValueOrDefault == 0", defaultValueOfNullableInt.GetValueOrDefault());

【讨论】:

【参考方案3】:
var x = default (int?);
Console.WriteLine("x == 0", (x == null) ? "null" : x.ToString());

【讨论】:

以上是关于C语言中定义int变量,默认值是多少的主要内容,如果未能解决你的问题,请参考以下文章

c++中定义一个无符号的整形不赋值默认值是多少 unsigned int point;

c语言中float类型变量的默认初始值是啥?

可空类型“int”的默认值是多少? (包括问号)?

java中,声明基础变量和数组后都有默认值。例如int i;//默认值是0;int []i=new int [10];//默认值都是0

Python中整数变量的默认初始值?

系统环境变量path默认值是多少,还有运行eclipse的问题