《C++ Primer 4 Answer Book》 整理[2]——第2章 变量和基本类型

2      变量和基本类型

         22.1int,longshort类型之间有什么差别?

         答:它们的最小存储空间不同,分别为16位、32位和16位。一般而言,short类型为半个机器字长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中,int类型和long类型的字长通常是相同的)。因此,它们表示的范围不同;

        

         32.3如果在某机器上short类型占16位,那么可以赋给short类型的最大数是什么?unsignedshort类型的最大数又是什么?

         答:可以赋给short类型的最大数是2^15-1,即32767;而unsigned short类型的最大数为2^16-1,即65535

 

         42.4当给16位的unsignedshort对象赋值100000时,赋的值是什么?

         答:100000超过了16位的unsigned short类型的表示范围,编译器对其二进制表示截取低16位,相当于对65536求模,得34464

 

         52.5float类型和double类型有什么差别?

         答:二者存储的位数不同(一般而言,float类型为32位,double类型为64位),因而取值范围不同,精度也不同(float类型只能保证6位有效数字,而double类型至少能保证10位有效数字);

        

         62.7解释下列字面值常量的不同之处:L’a’,L”a”,012,0xC,3.14,3.14f,3.14L-10u,-10e-2;

         答:L’a’wchar_t型字面值;

L”a”为宽字符串字面值;

012为八进制表示的int型字面值;

0xC为十六进制表示的int型字面值;

3.14double型字面值;

3.14ffloat型字面值;

3.14Llong double型字面值;

                   -10uunsigned int型;

                   -10e-2double型;

        

         72.12区分左值和右值

         答:左值就是变量的地址,或者是一个代表“对象在内存中的位置”的表达式;

                   右值就是变量的值;

 

         82.16假设calc是一个返回double对象的函数,下面哪些是非法定义?

                   a)int car=1024,auto=2048;:非法,auto是关键字;

                   b)int ival=ival; :语法没有错,但是这个初始化没有实际意义,ival仍是未初始化的。

                   c)std::cin>>int input_value;:非法,>>运算符后面不能进行变量定义。

                   d)double salary=wage=9999.99:同一定义语句不同中不同变量的初始化应分别进行;

                   e)double calc=calc();

 

         92.17下列变量的初始值(如果有)是什么?

                   std::Stringglobal_str;

                   intglobal_int;

                   intmain(0

                   {

                            intlocal_int;

                            std::Stringlocal_str;

                            return0;

                   }

         答:global_strlocal_str的初始值均为空字符串,global_int的初始值为0local_int没有初始值;

 

         102.18解释下列例子中的name的意义:

                   externstd::String name;  说明语句,说明std::String变量name在程序的其他地方定义;

                   std::Stringname(“abc”);  定义语句,定义了std::String变量name,并将name初始化为”abc”;

                   externstd::String name(“abc”); 定义语句,定义了std::String变量name,并将name初始化为”abc”.但是这个语句只能出现在函数外部(即,name)是一个全局变量);

 

         112.23下列哪些语句合法?

                   a)const int buf;  不合法,因为定义const变量(常量)时必须进行初始化;

                   b)  int cnt=0;

                            constint sz=cnt;  合法;

                   c)不合法,因为修改了const变量sz的值;

                   d)int &rvall=1.01;  不合法,因为rvall是一个非const引用,非const引用不能绑定到右值,而1.01是一个右值;

        

122.32下列声明和定义哪些应该放在头文件中?哪些应该放在源文件中?

         a) int var;

         b) const double pi =3.1416;

         c) extern inttotal=255;

         d) const doublesq2=squt(2.0);

答:(a),(c),(d)应该放在源文件中,因为(a)(c)是变量定义,定义通常应该放在源文件中。(d)中的const变量sq2不是常量表达式的初始化,所以也应该放在源文件中。

         (b)const变量pi是用常量表达式初始化的,应该放在头文件中;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值