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;
(似乎答案几乎可以肯定是null
或0
,但它是哪一个?)
【问题讨论】:
为什么投反对票? (如果没有实际运行代码来测试行为,这个问题的答案最初对我来说并不明显;令人惊讶的是,我在 *** 上找不到这个问题的副本,或者通过谷歌在其他地方很容易找到。) 你可能看过here - 谷歌第一次为我点击。 @500 - 我在研究时确实找到了那篇文章 - 实际上我在下面自己的答案中链接到了它 - 但据我所知,这篇文章并没有明确说明可空类型实例的默认值为空。它确实说“HasValue 的默认值为 false。Value 属性没有默认值”,但这并不能直接回答我最初的问题,而无需进行一些额外的挖掘。 我想知道是不是因为你可以设置一个断点看看值是多少,或者在即时窗口中输入int? x;
看看结果是什么?
【参考方案1】:
int?
的默认值 - 以及任何使用“type?”的可空类型声明——是null
。
为什么会这样:
int?
是类型 Nullable<T>(其中 T 是 int
)的语法糖,一个结构。 (reference)
Nullable<T>
类型有一个bool HasValue 成员,当false
时,它使Nullable<T>
实例“表现得像”null
值。特别是,当带有HasValue == false
的Nullable<T>
与实际的null
值进行比较时,Nullable<T>.Equals method 被覆盖以返回true
。
从C# Language Specification 11.3.4 开始,结构实例的初始默认值是该结构的所有值类型字段设置为其默认值,并且该结构的所有引用类型字段设置为null
。
C# 中bool
变量的默认值为false
(reference)。因此,默认Nullable<T>
实例的HasValue
属性为false
;这反过来又使 Nullable<T>
实例本身的行为类似于 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<T>.GetValueOrDefault()
方法很重要,该方法在处理使用Nullable<int>
又名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;
java中,声明基础变量和数组后都有默认值。例如int i;//默认值是0;int []i=new int [10];//默认值都是0