C++Primer第五版习题答案第二章变量和基本类型(variablesandbasict。。。

C++Primer第五版习题答案第⼆章变量和基本类型(variablesandbasict。。。练习2.1
类型 int、long、long long 和 short 的区别是什么?⽆符号类型和带符号类型的区别是什么?float 和 double的区别是什么?
C++语⾔规定⼀个int⾄少和⼀个short⼀样⼤,⼀个long⾄少和⼀个int⼀样⼤,⼀个long long⾄少和⼀个long⼀样⼤。每个的最⼩尺⼨分别为:short,16位;int,16位;long,32位;long long,64位。
除去布尔型和扩展的字符型外,其他整形可以划分为带符号的和⽆符号的两种。带符号类型可以表⽰正数、负数或0,⽆符号类型则仅能表⽰⼤于等于0的值。美国共和党大会
float最⼩尺⼨为6位有效值,double最⼩尺⼨为10位有效值。
练习2.2
计算按揭贷款时,对于利率、本⾦和付款分别应选择何种数据类型?说明你的理由。
都选⽤double,利率4.5%=0.045,本⾦和付款⾦额都是以元为单位,钱的最⼩⾦额是分,需要精确到⼩数点后两位,所以都选⽤double。练习2.3
读程序写结果。
unsigned u =10, u2 =42;
std::cout << u2 - u << std::endl;
std::cout << u - u2 << std::endl;
int i =10, i2 =42;
std::cout << i2 - i << std::endl;
std::cout << i - i2 << std::endl;
std::cout << i - u << std::endl;
std::cout << u - i << std::endl;
32
4294967264
32
-
32
外商投资企业投资者股权变更的若干规定练习2.4
编写程序检查你的估计是否正确,如果不正确,请仔细研读本节直到弄明⽩问题所在。
#include<iostream>
int main()
{
unsigned int u =10, u2 =42;
std::cout << u - u2 << std::endl;
std::cout << u2 - u << std::endl;
int i =10, i2 =42;
std::cout << i2 - i << std::endl;
std::cout << i - i2 << std::endl;
std::cout << i - u << std::endl;
std::cout << u - i << std::endl;
return0;
}
练习2.5
指出下述字⾯值的数据类型并说明每⼀组内⼏种字⾯值的区别:
(a) ‘a’, L’a’, “a”, L"a"
(b) 10, 10u, 10L, 10uL, 012, 0xC
© 3.14, 3.14f, 3.14L
(d) 10, 10u, 10., 10e-2
(a)字符字⾯值,宽字符字⾯值,字符串字⾯值,宽字符串字⾯值;
(b)整形字⾯值,⽆符号整形字⾯值,长整形字⾯值,⽆符号长整形字⾯值,⼋进制整形字⾯值,⼗六进制整形字⾯值;(c)浮点型字⾯值,单精度浮点型字⾯值,扩展精度浮点型字⾯值;
(d)整形字⾯值,⽆符号整形字⾯值,浮点型字⾯值,浮点型字⾯值。
练习2.6
下⾯两组定义是否有区别,如果有,请叙述之:
int month =9, day =7;
int month =09, day =07;
(a)⼗进制整形;
(b)⼋进制整形,⼋进制总没有09。于永利
练习2.7
下述字⾯值表⽰何种含义?它们各⾃的数据类型是什么?
(a) “Who goes with F\145rgus?\012”
(b) 3.14e1L
© 1024f
(d) 3.14L
(a)string;
(b)long double;
©⾮法,整形字⾯值不可加后缀f;
蛋白水解酶
(d)long double。
请利⽤转义序列编写⼀段程序,要求先输出 2M,然后转到新⼀⾏。修改程序使其先输出 2,然后输出制表符,再输出 M,最后转到新⼀⾏。
#include<iostream>
int main()
{
std::cout <<2<<"\115\012";
std::cout <<2<<"\011\115\012";
return0;
}
练习2.9
解释下列定义的含义,对于⾮法的定义,请说明错在何处并将其改正。
(a) std::cin >> int input_value;
(b) int i = { 3.14 };
© double salary = wage = 9999.99;
(d) int i = 3.14;
(编译时记得使⽤C++11标准编译"-std=c++11”)
(a)⾮法,>>运算符后不能定义;
安徽省化工设计院
(b)⾮法,不能执⾏强制转换;
©⾮法,同⼀语句的初始化应该分别进⾏;
(d)合法,已强制转换。
练习2.10
百灵功放下列变量的初值分别是什么?
std::string global_str;
int global_int;
int main()
{
int local_int;
std::string local_str;
}
global_str,local_str为空字符串;
global_int为0;
local_int未初始化,没有初始值(测试下来也是0,最好都初始化掉)。
练习2.11
指出下⾯的语句是声明还是定义:
(a) extern int ix = 1024;
(b) int iy;
© extern int iz;
(b)定义;
(c)声明。
练习2.12
请指出下⾯的名字中哪些是⾮法的?
(a) int double = 3.14;
(b) int _;
© int catch-22;
(d) int 1_or_2 = 1;
(e) double Double = 3.14;
(a)⾮法,关键词;
(b)合法;
(c)⾮法;
(d)⾮法,字母、下划线开头;
(e)合法。
练习2.13
下⾯程序中 j 的值是多少?
int i =42;
int main()
{
int i =100;
int j = i;
}
100
练习2.14
下⾯的程序合法吗?如果合法,它将输出什么?
int i =100, sum =0;
for(int i =0; i !=10;++i)
sum += i;
std::cout << i <<" "<< sum << std::endl;
100 45
练习2.15
下⾯的哪个定义是不合法的?为什么?
(a) int ival = 1.01;
(b) int &rval1 = 1.01;
© int &rval2 = ival;
(d) int &rval3;
(a)合法;(b)不合法,引⽤类型的初始值必须是⼀个对象;
(c)合法;(d)不合法,引⽤类型必须初始化。
练习2.16
考察下⾯的所有赋值然后回答:哪些赋值是不合法的?为什么?哪些赋值是合法的?它们执⾏了哪些操作?
int i = 0, &r1 = i; double d = 0, &r2 = d;
- (a) r2 = 3.14159;
- (b) r2 = r1;
- (c) i = r2;
- (d) r1 = d;
(a)合法;
(b)合法;
(c)合法;
(d)合法。
练习2.17
执⾏下⾯的代码段将输出什么结果?
int i,&ri = i;
i =5; ri =10;
std::cout << i <<" "<< ri << std::endl;
10 10
练习2.18
编写代码分别改变指针的值以及指针所指对象的值。
int a =0, b =1;
int*p1 =&a,*p2 = p1;
// change the value of a pointer.
p1 =&b;
// change the value to which the pointer points
*p2 = b;
练习2.19
说明指针和引⽤的主要区别
1.指针本⾝就是⼀个对象,允许对指针赋值和拷贝,⽽且在指针的⽣命周期内它可以先后指向⼏个不同的对象;
2.指针⽆须在定义时赋初值。
练习2.20
请叙述下⾯这段代码的作⽤。
int i =42;
int*p1 =&i;
*p1 =*p1 **p1;

本文发布于:2024-09-22 01:04:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/140710.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:定义   指针   类型   输出   合法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议