C++ 变量默认初始化

std::string 默认初始化为null。因为string 类型本身接受无参初始化。

而对于内置类型int, C++ 规定,全局变量global_int 会被初始化为 0.

在main函数内部的 local_int 不会被初始化。

在使用为被初始化的变量是会有runtime error。

1 int global_int;
2
3 int main(void)
4 {
5     int local_int;
6     std::cout << global_int; // ok ,global 变量被初始化为0
7     std::cout << local_int;  // error, local 变量没有被初始化
8     return 0;
9 }
时间: 2024-10-13 23:14:42

C++ 变量默认初始化的相关文章

【转】Java类成员变量默认初始化规则

一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: ----------------------------------------------------------------------------------------- Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d -----------------------

[Swift]学习笔记----变量不会被默认初始化

顶一个变量,如果不进行初始化,是不能实用的,Swift 会报错. 目测 对象也是必须要new 才可以使用. 这又是我很赞同苹果的一个做法. Swift真不错! 而如果把变量申明为可选值,则该变量默认就会是一个 nil 值 (既空值) 语法是 var i:Int?; (吐槽以下博客园:居然不能再博客页面直接编辑博文,必须进入后台管理才可以编辑,真心弱爆了啊!看来博客园也不是写博客的长久之计!)

c++变量的初始化

1.普通内置类型变量的初始化 全局变量和静态变量会自动初始化为0,而在函数体内(当然包括main)的变量不会自动初始化,其值是随机的,所以声明一个变量之后立刻初始化是明智的. 2.类类型变量的初始化 类类型变量会自动调用默认构造函数初始化.如果该类是派生类,会首先调用基类的默认构造函数. 3.类中内置类型变量的初始化 类中的内置类型不会自动初始化,需要手动初始化,可以在构造函数中初始化.但构造函数中的语句其实是复制语句,执行的时候会调用默认构造函数和复制构造函数,效率上不如构造函数初始化式.构造

值初始化和默认初始化的区别

直接初始化和拷贝初始化 如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去.与之相反,如果不使用等号,则执行的是直接初始化. 当初始值只有一个时,使用直接初始化或拷贝初始化都行.如果用多个值进行初始化的情况,非要用拷贝初始化的方式处理也不是不可以,不过需要显式地创建一个(临时)对象用于拷贝. string s8=string(10,'c'); //拷贝初始化,s8的内容是cccccccccc. C++支持两种初始化形式:直接初始化和复制初始

C++中不同变量的初始化规则

当定义没有初始化式的变量(如int i;)时,系统有可能会为我们进行隐式的初始化.至于系统是否帮我们隐式初始化变量,以及为变量赋予一个怎样的初始值,这要取决于该变量的类型以及我们在何处定义的该变量. 1]内置类型变量的初始化     内置变量是否自动初始化,取决于该变量定义的位置.     ①在全局范围内的内置类型变量均被编译器自动初始化为0. #include<iostream> using namespace std; //全局范围内的部分内部变量 int gi; //被自动初始化为0 f

Java中初始变量默认值

Java语言中有8种基本数据类型,基本情况汇总如下: 序号 数据类型 大小/位 封装类 默认值 可表示数据范围 1 byte(位) 8 Byte 0 -128~127 2 short(短整数) 16 Short 0 -32768~32767 3 int(整数) 32 Integer 0 -2147483648~2147483647 4 long(长整数) 64 Long 0L -9223372036854775808~9223372036854775807 5 float(单精度) 32 Flo

关于C#中的变量的初始化问题浅谈

C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待.这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值. C#变量初始化的操作中有两个方法可确保变量在使用前进行了初始化: ◆变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其值就默认是0(类和结构在后面讨论). ◆方法的局部变量必须在代码中显式初始化,之后才能在语句中使用它们的值.此

java中基本数据类型与对象引用类型的默认初始化值学习

import org.junit.Test; public class TestInit {     boolean boo;     char cha;     byte by;     short shor;     int in;     float flo;     long lon;     double dou;     String str;     @Test     public void aa() {         System.err.println("boolean:&

c++全局变量,局部变量,内存布局,默认初始化

全局变量 定义在所有函数之外的变量,main函数之内的变量也是局部变量,Globle variable  未显示初始化时执行默认初始化 局部变量 定义在函数之内的变量,Local variable 未显示初始化,执行默认初始化,但值是未定义的(Undefinde behavior) 内存布局 变量(包括基本类型,符合类型,用户自定义类)分布在不同的内存区域.栈区存储局部变量(不包括局部的static变量),如函数内定义的变量,堆区存储动态内存对象(new或smater pointer申请分配的对