来看看下面的语句定义了几个变量:
int units_sold;
double sales_price,avg_price;
string title;
Sales_item curr_book;
定义了五个变量.每个定义都是以类型说明符(type specifier)开始,后面紧跟着以逗号分开的含有一个或多个说明符的列表.分号结束定义.类型说明符制定与对象相关联的类型:int、double、string和Sales_item都是类型名. 其中int跟double都是内置类型,string是标准库定义的类型,而Sales_item是类类型.
类型决定了分配给变量的存储空间的大小和在其上执行的操作.
保存下先,安装的WLW试试能不能用 :)
进度甚慢啊.每天才看几页,要多看看了 - -
多个变量可以定义在同一条语句中:
double salary,wage; //定义了两个变量
int month,day,year; //定义了三个变量
string address;
下面来看看变量的初始化.
变量的定义制定了它的类型和标识符,也可以为对象提供初始值.定义时制定了初始值的对象被称为是"已初始化的"(initialized) C++支持两种初始化变量的形式: 复制初始化(copy-initialization) 和 直接初始化 (direct-initialization) 复制初始化语法用 等号 =,直接初始化则是把初始化式放在括号中:
int ival(1024); //direct-initialization
int ival=1024; //copy-initialization
注意:C++里面,你要理解这句话"初始化不是赋值",初始化指的是创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替. 例如,你使用word工具,新建一个文档后,写下第一句话,这就是初始化,而你发现这句话好像写的不好,你选中它然后直接敲入新的语句,这就好比赋值.也好比是你刻录DVD-R一张,跟你使用一张已经有内容的DVD+RW再去刻录一样. - -
使用=来初始化变量会让新手感到迷惑,因为看上去这跟赋值没什么区别.但是在C++中你必须理解,初始化跟赋值是不一样的两种操作.C++在编写非常复杂的类的时候才会体现这两者的区别,其他时候这都是细枝末节的问题,但这是一个关键的概念,需要你反复去理解.
注意.直接初始化语法更加灵活且效率更高.就是使用括号的那种
初始化内置类型的对象只有一种方法:提供一个值,并且把这个值复制到新定义的对象中.
对内置类型而言,复制初始化和直接初始化几乎没有差别.
这条语句我不能理解:
std:string all_nines(10,'9'); //all_nines="9999999999"
初始化all_nines的唯一方法是直接初始化,有多个初始化式时不能使用复制初始化.
以上如何理解?跪求达人解释 = =
再来看看初始化多个变量
当一个定义中定义了两个以上变量的时候,每个变量都可能有自己的初始化式.对象的名字立即变成可见.所以可以用同一个定义中前面已定义变量的值初始化后面的变量.已初始化变量和未初始化变量可以在同一个定义中定义.两种形式的初始化文法可以互相混合.
#include<string>
double salary=9999.99,wage(salary+0.01);//在初始化wage之前定义并初始化salary
int interval,month=8,day=7,year=1955;//混合定义了已初始化变量和未初始化变量
std:string title("C++ Primer,4th Ed."),publisher="A-W";//两种初始化方式的语法并存
对象可以用任意复杂的表达式(包括函数的返回值)来初始化:
double price=109.99,discount=0.16;
double sale_price=apply_discount(price,discount);
这里的函数apply_discount接受两个double类型的值并返回一个double类型的值.将变量price和discount传递给函数,并且用它的返回值来初始化sale_price.
习题:
int month=9,day=7;跟int month=09,day=07;是否一样
当然不一样啦,大哥,前面加个0是表示八进制,你忽悠谁呢 = =
再来:
int car=1024,auto=2048;
int ival=ival;
std::cin>>int input_value;
double salary=wage=9999.99;
double calc=calc();
以上有什么错
第一句里面,auto是关键字,不能作变量名,第三句里面,>>这种运算符后面不能进行变量定义,改成 int input_value;cin:>>int input_value;第四句中,不同的变量应该分别初始化,double salary =9999.99,wage=9999.99;
另外,虽然 int ival=ival没什么错,但是这是无意义的,因为ival还是未初始化.