C++primer第二章变量与基本类型知识点和部分课后习题答案以及学习感受

一、算术类型分类:整型(包括字符和布尔类型在内)、浮点型

二、类型int、long、long long、short的区别是什么?
答:int(整型)和 short(短整型)至少是16个字节,long(长整型)至少是32个字节,long long(长整型)至少是64个字节

三、无符号类型和带符号类型的区别?
答:带符号类型可以表示正数、负数或0,但是无符号数仅仅表示大于等于0的数。

四、float 和 double的区别?
答:float以一个字(32个bit)来表示,double以两个字(64个bit)来表示,long double以3个或者4个字(96个bit和128个bit)来表示。

五、浮点型可以表示为单精度、双精度、和扩展精度值。

六、布尔型的取值是真或者是假。

七、当一个算术表达式中既有无符号数又有int值时,那个int 值就会转换成无符号数。把int转换成无符号数的过程和int直接赋给无符号数一样。

八、无符号数不会小于0这一事实同样关系到循环的写法。

九、以0开头的整数代表八进制数,以0x或0X开头的代表十六进制数
例子:
用十进制,八进制,十六进制表示数20
20(十进制)、024(八进制)、0x14(十六进制)

十、试问 ‘A’ 和 “A” 的区别
答:字面值‘A’表示的是单独的字符A,而字符串“A”则代表了一个字符的数组,该数组包含两个字符:一个是字母A、另一个是空字符‘\0’。

十一、程序员不能直接使用的两类字符
答:一类是不可打印的字符;另一类是在C++语言中有特殊含义的字符(单引号、双引号、问号、反斜线)。在这两种情况下需要用到转义序列,转义序列均以反斜线作为开始。

十二、如果反斜线\后面跟着八进制数字超过3个,只有前面3个数字与\构成转义序列。

      例子:“\1234”表示2个字符,即八进制数123对应的字符以及字符4。
      相反,\x要用到后面跟着的所有数字
      例子:“\x1234”表示一个16位的字符,该字符由这四个十六进制数所对应的比特唯一确定。

十三、规则
首先了解一下字符串的前后缀:
前缀: u unicode16字符
U unicode32字符
L 宽字符
u8 utf-8

      后缀:  u或U    表示该字面值为无符号类型
                   l或L     表示该字面值的类型至少为long
                   ll或LL   表示该字面值的类型至少为long long 
                  f或F      表示该字面值为float类型
    前后缀可以交叉结合使用:后缀UL时,表示无符号长整型。字符用单引号‘’,字符串用双引号“”。

十四、
利用转义序列编写一段程序,要求先输出2M,然后转到新一行。修改程序使其输出2,然后输出制表符,在输出M,最后转 到新一行。
#include
using namespace std;
void main()
{
cout<<“2M”<<’\n’;
cout<<‘2’<<’\t’<<‘M’<<’\n’;
}
注意事项:转义序列在程序中是被当作字符来使用的

十五、解释下列定义的含义,并对于非法的定义说明错的理由。
1、std::cin>>int input_value
输入时才定义是非法的,需要在cin之前定义input_value
2、int i={3.14}
i被强制类型转成了3
3、double salary=wage=9999.99
wage未定义
4、int i=3.14;
i被强制类型转成了3
需要注意的就是类型转换的问题,还有变量使用之前需要先定义声明

十六、下列变量的初始值分别指的是什么?
std::string global_str; 变量初始值为空字符串
int global_int; 变量初始值为0
int main() 变量初始值不确定
{
int local_int;
std::string local_str; 变量初始值为空字符串
}
解析:这里涉及到的就是默认初始化的问题
如果在定义变量时没有指定初值,那么变量会被默认初始化。
三条性质:
1、定义在任何函数体外的变量会被初始化为0。
2、定义在函数体内部的变量不会被初始化。
3、类的对象未被初始化,则初值由类决定。

十七、区分一下声明和定义
1、extern int ix=1024;定义
2、int iy;定义
3、extern int iz;声明
知识点为:
1、声明:使得名字被程序所知,一个文件如果想使用别处定义的名字则必须包含那个名字的声明。然而定义负责创建与 名字关联的声明。
2、如果声明一个变量而非定义他,就在变量前边前添加关键字extern。
例子:extern int i;//声明i而非定义i
int j;//声明并定义j
3、extern语句如果包含初始值就不是声明而变成定义了:
例子:extern double pi=3.1416;定义
4、变量能且只能被定义一次,但是可以被多次声明。
5、变量的定义必须出现在且只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,绝对不能重复定义。

十八、标识符
注意:字母+数字+下划线(必须以字母或者下划线开头)
C++中关于变量命名的规范:
1:能体现变量的实际意义
2:变量名一般采用小写字母
3:用户自定义变量名可以以大写字母开头
4:多个单词定义的变量名应有区分Student_loan 或者 studentLoan但是不能为studentloan。

        说出下面哪些是错误的:
        1、int double=3.14;使用关键字double作为关键字
        2、int_;正确
        3、int catch-22;-为无效字符
        4、int 1_or_2=1;不能以数字开头
        5、double Double=3.14;正确

十九、名字的作用域
1、下面程序中的j的值为:
int i=42;
int main()
{
int i=100;
int j=i;
}
解析:j=100,新建局部变量会覆盖同名的全局变量
2、下面的程序合法吗?如果合法,他将输出什么?
int i=100,sum=0;
for(int i=0;i!=10;i++)
sum+=i;
std::cout<<i<<" "<<sum<<std::endl;
解析:合法,显示访问i变量会访问到全局变量
i=100;sum=45

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值