![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ Primer第五版练习
PYPARA
Things change ,roll with it.
展开
-
2.1.1节练习
2.1 int 、long 、longlong、short在内存中所占大小不同。 通常 int 16bit long 32bit longlong 64bit short 16bit 根据机器的不同 ,可能每个数据使用内存大小都不同。所以它们分别表达的数的范围也不同。带符号类型可以表达正负数,而无符号数只能表达大于等于0的数。对于同一种字节长来说,显然无符号数所能表达的正原创 2016-09-12 10:57:40 · 297 阅读 · 0 评论 -
2.1.2节练习
2.3 unsigned u=10,u2=42;std::cout<<u2-u<<std::endl; //输出 32std::cout<<u-u2<<std::endl; // 输出4294967264int i=10,i2=42;std::cout<<i2-i<<std::endl; // 32std::cout<<i-i2<<std::endl; //-32std::c原创 2016-09-12 11:04:22 · 310 阅读 · 0 评论 -
2.1.3练习
2.5 (a)‘a’ L’a’ “a” L”a” ‘a’ 字符字面值 L‘a’宽字符字面值 “a”字符串字面值 L”a” 宽字符串字面量 (b)10 10u 10L 10uL 012 0xC 分别表示int unsigned int long unsigned long 八进制 十六进制 (c)3. 14 3.14f 3.14l原创 2016-09-12 11:28:33 · 285 阅读 · 0 评论 -
2.2.1节练习
2.9 (a)std::cin>>int input_value; 先定义 后使用 改正:int input_value=0; std::cin>>input_value;(b)int i={3.14}; 3.14是浮点数 错误使用了int 改正:double i={3.14};(c)double salary=wage=9999.99; wage未声明原创 2016-09-12 16:44:27 · 337 阅读 · 0 评论 -
2.2.2节练习
2.11(a)extern int ix=1024; 定义 (b)int iy; 定义 (c)extern int iz; 声明原创 2016-09-12 16:51:08 · 305 阅读 · 0 评论 -
2.2.3节练习
2.12(a) int double = 3.14; (b) int _; (c) int catch-22; (d) int 1_or_2 = 1; (e)double Double = 3.14; a、c、d是非法的原创 2016-09-12 17:02:08 · 275 阅读 · 0 评论 -
2.2.4节练习
2.13int i=42;int main(){ int i=100; int j=i;}j的值是100。int i=100,sum=0;for(int i=0;i!=10;++i) sum+=i;std::cout<<i<<" "<<sum<<std::endl;合法 输出100。原创 2016-09-12 17:09:35 · 343 阅读 · 0 评论 -
2.3.1节练习
2.15 (a)int ival=1.01; (b)int &rval1=1.01; (c)int &rval2=ival; (d)int &rval3; a、c合法 b、d不合法 b中 引用的类型必须和原类型一致 引用是int 而1.01是浮点数 d中 引用必须初始化,没有初始化所以错误2.16 int i = 0, &r1 = i; double d原创 2016-09-12 17:44:44 · 363 阅读 · 0 评论 -
1.1节练习
1.1 .cpp 为源代码文件 .vcxproj是项目信息文件 .filters是过滤信息文件,某些特殊的文件是不显示在vs里面的 .sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合。 .db 数据库数据存放文件。 每种软件都有它自己的存放格式,就是数据的排列方式。原创 2016-09-03 18:45:34 · 381 阅读 · 0 评论 -
1.2节练习
1.3#include<iostream>int main() { std::cout << "Hello,World." << std::endl; return 0;}1.4#include<iostream>int main() { std::cout << "输入相乘的两个因数:" << std::endl; int v1 = 0, v2 = 0;原创 2016-09-03 20:18:11 · 262 阅读 · 0 评论 -
1.3节练习
1.7#include<iostream>/*不正确的/*嵌套*/*/int main() { int v1 = 0, v2 = 0; std::cin >> v1 >> v2; std::cout << "The sum of" << v1 << "and" << v2 << "is" << v1 + v2 << std::endl; retur原创 2016-09-03 20:45:53 · 295 阅读 · 0 评论 -
1.4.1练习
1.9#include<iostream>int main() { int sum = 0, val = 50; while (val <= 100) { sum += val; ++val; } std::cout << "50到100的和是" << sum<<std::endl; return 0;}1.10#includ原创 2016-09-03 21:17:33 · 223 阅读 · 0 评论 -
1.4.2练习
1.12int sum=0;for(int i=-100;i<=100;++i)sum+=i;这个语句完成了整数-100到100之间的相加,并最终得到结果给sum; sum终值为0;1.13#include<iostream>int main() { int sum = 0; for (int val = 50; val <= 100; ++val) sum原创 2016-09-03 21:50:19 · 299 阅读 · 0 评论 -
1.4.3节练习
#include<iostream>int main() { int sum = 0, value = 0; std::cout << "输入完按ctrl+z 按回车结束输入" << std::endl; while (std::cin >> value) sum += value; std::cout << "Sum is" << sum << s原创 2016-09-04 15:22:57 · 234 阅读 · 0 评论 -
1.4.4节练习
1.17 如果输入所以值都相等,会输出这个值的次数。 如果没有重复值,这个程序会把输入的值全部重新输出一次。1.18#include<iostream>int main() { int currVal = 0, val = 0; if (std::cin >> currVal) { int cnt = 1; while (std::cin >>原创 2016-09-04 16:24:42 · 358 阅读 · 0 评论 -
1.5.1节练习
1.20#include<iostream>#include"Sales_item.h"int main() { Sales_item item1; std::cin >> item1 ; std::cout << item1<< std::endl; return 0;}1.21#include<iostream>#include"Sales_item.h"i原创 2016-09-04 21:02:50 · 604 阅读 · 0 评论 -
1.5.2节练习
#include<iostream>#include"Sales_item.h"int main() { Sales_item item1, item2; int cnt = 1; std::cin >> item1; while (std::cin >> item2) { if (item2.isbn() == item1.isbn()) {原创 2016-09-04 21:53:49 · 296 阅读 · 0 评论 -
1.6节练习
#include<iostream>#include"Sales_item.h"int main() { Sales_item total; if (std::cin >> total) { Sales_item trans; while (std::cin >> trans) { if (total.isbn() == tr原创 2016-09-06 20:28:47 · 264 阅读 · 0 评论 -
2.3.2节练习
2.18#include<iostream>int main(){ int a=1,b=2; int*p=&b; std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl; p=&a; std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl; *p=a; std::cout<<"p:"<<p<原创 2016-09-19 21:54:01 · 321 阅读 · 0 评论 -
2.3.3节练习
int* ip,i,&r=i; //ip是int指针,i是int,r是i的引用int i,*ip=0; //i是一个int ,ip是一个空指针int* ip,ip2; //ip是一个int指针,ip2是一个int原创 2016-09-19 22:03:31 · 325 阅读 · 0 评论 -
2.4节练习
2.26const int buf; //不合法,const int必须初始化int cnt=0; // 合法const int sz=cnt; // 合法++cnt; //合法++sz; //不合法 ,sz是常量,不能被改变原创 2016-09-19 22:08:16 · 311 阅读 · 0 评论 -
2.4.2节练习
2.27int i=-1,&r=0; //不合法,其中r必须是一个int的引用,0是常量int *const p2=&i2; //合法,p2是指向i2的指针,其中p2不能改变const int i=-1,&r=0; //合法,i是常量,r是0的引用const int *const p3=&i2; // 合法,p3指向一个i2常量,并且p3不能改变const int *p1=&i2; //原创 2016-09-19 23:24:16 · 351 阅读 · 0 评论 -
2.4.3节练习
2.30const int v2=0; int v1=v2; //v2顶层constint *p1=&v1,&r1=v1;const int *p2=&v2,*const p3=&i,&r2=v2;//p2底层const,p3前面一个const是底层const,后面一个const是顶层const r2是底层const 2.31r1=v2;//合法,v2顶层constp1=p2;// 不合法原创 2016-09-20 23:04:04 · 285 阅读 · 0 评论 -
2.4.4节练习
2.32int null=0,*p=null;不合法 修改:int null1=0,*p=&null1;原创 2016-09-20 23:10:39 · 333 阅读 · 0 评论 -
2.5.2节练习
2.33a=42; //给int的a赋值42b=42; //给int的b赋值42c=42; //给int的c赋值42d=42;//错误.d是指针 不能赋值42e=42; // 错误 e是指针 不能赋值42g=42; //g是一个引用 初始化后 不能更改2.34 mark2.35 mark原创 2016-09-20 23:27:43 · 323 阅读 · 0 评论 -
2.5.3节练习
2.36int a=3,b=4;decltype(a) c=a;decltype((b)) d=a;++c;++d;c是int 值为4 d是a的引用 值是4 完成操作后a=4 b=4。2.37int a=3,b=4;decltype (a) c=a;decltype(a=b) d=a;c 是int 值为3 d是a的引用 值为32.38int i = 0, &r =原创 2016-10-03 20:46:58 · 306 阅读 · 0 评论 -
2.6.1节练习
2.39struct foo{}int main (){ return 0;}2.40struct Sales_date{std::string boookNo;std::string name;int sales_n=0;double inprise=0.0;double outprise=0.0;};原创 2016-10-03 20:57:00 · 325 阅读 · 0 评论 -
3.5.5
3.41#include<vector>using namespace std;int main() { int arr[10] = { 0,1,2,3,4,5,6,7,8,9 }; vector<int> vec(begin(arr), end(arr)); return 0;}3.42#include<vector>using namespace std;int原创 2016-12-21 14:09:53 · 241 阅读 · 0 评论 -
3.6
3.43#include <iostream>using namespace std;int main(){ int arr[3][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 } }; // range for for (const int(& r原创 2016-12-21 14:54:53 · 285 阅读 · 0 评论 -
4.1.2
4.1 5 + 10 * 20/21054.2* vec.begin() // *(vec.begin())* vec.begin() + 1 // (*(vec.begin())) + 1原创 2016-12-21 19:59:04 · 337 阅读 · 0 评论 -
4.1.3
4.3 我认为一定程度上可以接受,但是我认为如果有明确规定后,会减少bug,也算是效率的提升。我更欣赏明确规定比较好。原创 2016-12-21 20:26:57 · 350 阅读 · 0 评论 -
4.2
4.4((12/3)*4) + (5*15) + ((24%4)/2) //914.5-30 * 3 + 21 / 5 // -90+4 = -86-30 + 3 * 21 / 5 // -30+63/5 = -30+12 = -1830 / 3 * 21 % 5 // 10*21%5 = 210%5 = 0-30 / 3 * 21 % 4 // -10*21%4 = -210%4原创 2016-12-21 20:41:26 · 238 阅读 · 0 评论 -
4.3
4.8 && 只有当前面的是ture的时候才会去看后面,如果是前面false直接返回false || 只有当前面是false才会看后面的,如果前面是true直接返回true== 未定义顺序4.9const char *cp = "Hello World";if (cp && *cp)先判断cp指针存在,是一个const char* true 判断 *cp 存在 ‘H’是它的值原创 2016-12-22 15:14:24 · 253 阅读 · 0 评论 -
4.4
4.13int i; double d;d = i = 3.5; // i = 3, d = 3.0i = d = 3.5; // d = 3.5, i = 34.14if (42 = i) // complie error: expression is not assignableif (i = 42) // 没有错误,但是应该是i==42吧?4.15double dval; i原创 2016-12-22 15:20:59 · 205 阅读 · 0 评论 -
4.5
4.17++i,将i增1,并且(++i)本身是增1后的值i++,将i增1,但是(i++)本身是原来的值 例如:int i=5;++i;// i=6,(++i)=6int j=5;j++; //j=6,(j++)=54.18 会从第二个元素开始输出,并且会输出尾元素后的一个元素,那是不存在的,所以会出错4.19ptr != 0 && *ptr++ // ptr不是空指针,并且存在原创 2016-12-22 15:32:44 · 251 阅读 · 0 评论 -
4.6
4.20*iter++; // 返回*iter,然后iter后移一位(*iter)++; // 不合法,试图为一个string +1?*iter.empty() // 不合法,要用->iter->empty(); // 判断iter所指的是否为空++*iter; // 不合法,试图为一个string +1?iter++->empty(); // 返回 iter->em原创 2016-12-22 15:38:15 · 190 阅读 · 0 评论 -
4.7
4.21#include <iostream>#include <vector>using namespace std;int main(){ vector<int> ivec{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (auto i : ivec) { cout << ((i % 2) ? i : i * 2) << " ";原创 2016-12-22 16:05:13 · 223 阅读 · 0 评论 -
4.9
4.28#include <iostream> // high level input/output operations.int main(){ // by using method below only include what is needed. using std::cout; using std::endl; // void type cout <原创 2016-12-22 16:34:58 · 216 阅读 · 0 评论 -
4.10
4.31 使用前置版本一般比后置版本快,并且节省空间。 ++i,直接递增1,并且返回增1后的数 i++,递增1,但是要保存递增之前的数。并返回。也就是说要保存2个数使用哪个版本,看你想达到什么效果,一般情况下建议使用前置版本4.32constexpr int size = 5;int ia[size] = { 1, 2, 3, 4, 5 };for (int *ptr = ia, ix =原创 2016-12-22 17:03:01 · 253 阅读 · 0 评论 -
4.11.1
4.34if (fval) // fval变成 bool类型dval = fval + ival; // ival int 变成 fval float,最后变成doubledval + ival * cval; // cval char 变成int, 然后 int 变成double4.35char cval; int ival; unsigned int ui; float fval; doub原创 2016-12-22 17:11:25 · 338 阅读 · 0 评论