C++变量的默认初始化规则】的更多相关文章

定义没有初始化式的变量时,系统有时候会帮我们初始化变量.系统如何初始化取决于变量的类型以及变量定义的位置. 内置类型变量是否自动初始化取决于变量定义的位置.函数体外定义的变量初始成0:函数体内定义的变量不进行自动初始化.除了用作赋值操作的左操作数,其他任何使用未初始化变量的行为都是未定义的,不要依赖未定义行为. 以int类型为例,一段简单的测试代码: #include <iostream> using namespace std; int a; int main() { int b; cout…
Java中的变量有成员变量和局部变量,定义在类中方法之外的变量成为成员变量或者成员字段(域),表示一个类所具有的属性,定义为类的成员变量的变量的作用于是整个类,该变量在定义的时候不需要初始化,在使用前java会自动初始化成员变量,对于基本数据类型的的自动初始化如下: java基本类型默认初始化值 int 0 short 0 byte 0 long 0 float 0.0 double 0.0 boolean false char 0 例如: public class test{ private…
一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: ----------------------------------------------------------------------------------------- Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d -----------------------…
全局变量和静态变量会自动初始化为0,堆和栈中的局部变量不会初始化而拥有不可预测的值. C++保证了所有对象与对象成员都会初始化,但其中基本数据类型的初始化还得依赖于构造函数(或初始化列表). 成员变量分为成员对象和内置类型成员,其中成员对象总是会被初始化的.而我们要做的就是在构造函数中初始化其中的内置类型成员. 内置类型成员变量的"默认初始化"行为取决于所在对象的存储类型,而存储类型对应的默认初始化规则是不变的. 所以为了避免不确定的初值,通常会在构造函数中初始化所有内置类型的成员.…
一.什么是默认初始化 默认初始化,顾名思义,即为在定义变量时如果没有为其指定初始化值,则该变量会被C++编译器赋予默认的值.而变量被赋予的默认值到底是什么,则取决于变量的数据类型和变量的定义位置. 二.默认初始化的规则 规则1:内置类型的变量如果初始化,则它的默认初始化值取决于定义它的位置: • 定义在任何函数之外的未初始化的内置类型变量(也就是全局变量)会被默认初始化为0 #include<iostream> using namespace std; int n; double d; int…
按照c++ primer 5th第40页的描述,如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”. 根据变量定义的位置,分为两种情况: 1.定义于任何函数体之外的变量被初始化为0. 2.定义在函数体内部的内置变量将不被初始化. 这里两种情况应该说的十分清楚了,但是当我学到类的时候,还是产生了疑问,类内的成员变量怎么被初始化呢? 在写练习题的时候,我研究清楚了. 类内成员变量的默认初始化方式与类所定义的对象的位置有关,分为两种情况: 1.定义于任何函数体之外的类的对象,其…
对于初始化的问题,我之前一直傻傻分不清.有关初始化以及赋值的区别也是一问题,这次回过头来看,配合<<CSAPP>>的内容,对初始化有了一些新的认识. 声明: 在环境/上下文中指定一个变量的名字.也就是说,声明仅仅是让编译器知道,而没有实际分配空间. 初始化:给一个声明后尚未初始化的变量一个有意义的初始值. 赋值 : 销毁一个变量原来的值,并赋予一个新值.相当于改变了一个变量的状态 初始化是在声明一个变量的同时赋予它一个值,而赋值是已经声明过了变量,后续再对它进行赋值操作.对于内置类…
1.定义变量的时候,如果没有初始化,它的值是什么呢? 它的值取决于变量的类型和变量定义的位置. 2.考虑基本类型的变量,定义时没有初始化.如果定义在方法外部,初始化为0,如果定义在方法内部,不被初始化.使用未初始化的变量,导致未定义行为.未初始化的变量事实上,也有一个值,这个值是随机的.因此强烈建议,基本类型的变量都要初始化,也就是方法内部的变量. 3.考虑类类型的变量,定义时没有初始化.不管定义在哪里,都会调用默认构造方法,这种情况下,必须提供默认构造方法,如果没有,编译出错.也就是说,对于类…
Java变量的默认值和初始化 学习自 <Thinking In Java> 技术小黑屋-为什么局部变量需要显式设置初始化值 变量的默认值 注意只有成员变量才有默认值,而局部变量必须要赋初值.为什么会这么设计,下面会讨论. 关于各种基础类型的默认值,大家肯定都耳熟能详了,这里就不在叨叨,详见下表: | 类型 | 值 | |----------------------|-----------------------------------| | Int | 0 | | Long | 0 | | B…
对于内置变量的自动初始化 代码1: #include<stdio.h> #define CONST 100 int *p1; ]; int b; static int c; main() { int d; static int e; ]; int *p2; printf("CONST=%d\n",CONST); printf(]); //printf("*p1=%d\n",*p1); printf("b=%d\n",b); print…