C++中内置变量的初始化
来源:互联网 发布:windows ad域策略 编辑:程序博客网 时间:2024/05/24 00:52
对于全局的变量
如果内置类型的变量未被显示地初始化,它的值将由定义的位置决定。
(1).定义在函数体之外的变量将被初始化为0;
(2).定义在函数体内部的变量将不被初始化,它的值将是任意的。
对于(1)举例如下:
short sn;int in;long ln;long long lln;float f;double d;long double ld;bool b;char c;wchar_t wc;int nArr[10];void PrintVariable() {cout << "short:" << sn << endl;cout << "int:" << in << endl;cout << "long:" << ln << endl;cout << "long long:" << lln << endl;cout << "float:" << f << endl;cout << "double:" << d << endl;cout << "long double:" << ld << endl;cout << "bool:" << "he" << c << "llo" << endl;cout << "char:" << c << endl;cout << "wchar_t:" << "he" << wc << "llo" << endl;cout << "print array:" << endl;for (int i = 0; i < 10; i ++){cout << nArr[i] << " ";}cout << endl;}
结果
short:0
int:0
long:0
long long:0
float:0
double:0
long double:0
bool:he llo
char:
wchar_t:he0llo
print array:
0 0 0 0 0 0 0 0 0 0
对于(1)举例如下:
void PrintVariable() {short sn;int in;int nArr[10];int num = in;//未被初始化,不请允许拷贝:Run-Time Check Failure #3 - The variable 'in' is being used without being initialized.cout << "short:" << sn << endl;//未被初始化,不允许访问该成员:Run-Time Check Failure #3 - The variable 'sn' is being used without being initialized.cout << nArr[0] << in << endl;//未被初始化,不允许访问该成员:Run-Time Check Failure #3 - The variable 'in' is being used without being initialized.}
类内的成员变量
如果是在类中定义的类成员,则初始化的顺序为:
1.构造函数初始化
2.如果没有构造函数,则通过类内的初始值进行初始化(可能有些较老的版本不允许有类内初始值)
3.默认初始化(值将是未定义的,是任意的)
没有构造函数初始化:
#pragma once#include <iostream>using namespace std;class TestData{public://TestData(void);~TestData(void);void PrintVariable() {cout << "short:" << sn << endl;cout << "int:" << in << endl;cout << "long:" << ln << endl;cout << "long long:" << lln << endl;cout << "float:" << f << endl;cout << "double:" << d << endl;cout << "long double:" << ld << endl;cout << "bool:" << "he" << c << "llo" << endl;cout << "char:" << c << endl;cout << "wchar_t:" << "he" << wc << "llo" << endl;cout << "print array:" << endl;for (int i = 0; i < 10; i ++){cout << nArr[i] << " ";}cout << endl;}private:short sn;int in;long ln;long long lln;float f;double d;long double ld;bool b;char c;wchar_t wc;int nArr[10];};
结果(很可怕):
short:-13108
int:-858993460
long:-858993460
long long:-3689348814741910324
float:-1.07374e+008
double:-9.25596e+061
long double:-9.25596e+061
bool:he蘬lo
char:
wchar_t:he52428llo
print array:
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
通过构造函数初始化
#pragma once#include <iostream>using namespace std;class TestData{public:TestData(void) : sn(0), in(0), ln(0), lln(0), f(0), d(0.0), ld(0), b(true), c(' '), wc(L' '){memset(nArr, 0, 10*sizeof(int));}~TestData(void);void PrintVariable() {cout << "short:" << sn << endl;cout << "int:" << in << endl;cout << "long:" << ln << endl;cout << "long long:" << lln << endl;cout << "float:" << f << endl;cout << "double:" << d << endl;cout << "long double:" << ld << endl;cout << "bool:" << "he" << c << "llo" << endl;cout << "char:" << c << endl;cout << "wchar_t:" << "he" << wc << "llo" << endl;cout << "print array:" << endl;for (int i = 0; i < 10; i ++){cout << nArr[i] << " ";}cout << endl;}private:short sn;int in;long ln;long long lln;float f;double d;long double ld;bool b;char c;wchar_t wc;int nArr[10];};
short:0
int:0
long:0
long long:0
float:0
double:0
long double:0
bool:he llo
char:
wchar_t:he32llo
print array:
0 0 0 0 0 0 0 0 0 0
- C++中内置变量的初始化
- C++中内置变量的初始化
- 内置类型变量的初始化
- C语言中变量的初始化问题
- C程序中,变量的初始化问题
- C语言中指针变量的初始化
- 内置变量初始化
- C++中内置变量初始化及private继承相关
- C语言中变量没有初始化 所带来的问题
- C中全局变量和局部变量的初始化问题
- C语言中变量的存储类型与初始化
- C语言变量的初始化
- C语言变量的初始化
- C/C++ 变量的初始化
- 【C++】变量(三) 变量的初始化
- Ruby 中变量的初始化
- java中变量的初始化
- 类中变量的初始化
- CODE[VS]_1098 均分纸牌问题
- JAVA字符串中所用的方法
- MyBatis 3源码分析
- [VirtualBox] - Install Oracle Linux 7 on Oracle VirtualBox
- 输入框点击内容清空或显示的js代码
- C++中内置变量的初始化
- 2014.10.04 周六-没记录
- in 和 exist 区别
- JAVA 泛型
- 基于注解的SpringMVC简单介绍(推荐)
- 责任链模式
- newInstance()和new()
- 割耳法(几何)
- 全能多媒体开发框架Vitamio