#include<iostream>
using namespace std;
int main()
{
string a("jcnjnv");
cout<<a;
return 0;
}
这样是可以的哦!
在变量定义中,当一次定义了两个或多个变量时,对象的名字随着定义也就马上可以开始使用了。
例:
double price=109.99,discount=price*0.16;
这是合法的。
在C++中初始化是一个异常复杂的问题,初始化不等于赋值,事实上在C++语言中,初始化和赋值完全是两个不同的操作。需要强调的是这个概念至关重要。
初始化不是赋值,初始化的含义是创建一个变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。
初始化方法:
#include<iostream>
using namespace std;
int main()
{
int a=2;
int b={2};
int c{2};
int d(2);
cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl;
return 0;
}
其中int c{2};是C++11新标准,部分编译器不支持。现在无论是初始化对象还是某些时候为对象赋新值,都能由初始化表来完成。
当用于内置类型的变量时,这种初始化形式有一个特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错:
long double ld=3.1415926536;
int a{ld}; int b={ld}; //错误:转换未执行,因为存在丢失信息的风险。
int a(ld); int a=ld; //正确:转换执行,且确实丢失了部分值。
默认初始化:
如果定义变量时没有指定初值,则变量被默认初始化,默认值到底是什么由变量类型决定,同时定义变量的位置也会对此有影响。
定义于任何函数体之外的变量被初始化为0。
变量声明和定义:
为了允许程序拆分成多个逻辑部分进行编写,C++语言支持分离式编译机制,该机制允许将程序分割成若干个文件,每个文件可独立编译。
例如using namespace std;就是一个典型例子,他们定义于标准库,却能被我们写的程序使用。
为了支持分离式编译,C++语言将声明和定义分开来,声明使得名字为程序所知,而定义负责创建与名字相关联的实体。
变量声明规定了变量的类型和名字,在这一点上定义与之相同。但是除此之外,定义还申请存储空间,也可能为变量赋一个初始值,
extern int i; //声明i
int j //定义j
在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。在函数体外不会出错,不过就变成了了定义了。
#include<iostream>
using namespace std;
int main(int argc,char**argv)
{
extern int i=1;
cout<<i;
return 0;
}
错误
#include<iostream>
using namespace std;
extern int i=1;
int main(int argc,char**argv)
{
cout<<i;
return 0;
}
正确
-----------38----------------42