
C/C++
xclhs
谦虚呀!谦虚啦~不足足足足......
展开
-
C++类的互相调用多种实现形式
关于类相互调用的讨论实现方式1:A.h#ifndef_A#define_A<strong>#include"B.h"//A的头文件导入了B的头文件</strong>//extern class B;classA{private:inta;B objectb;//A的头文件导入了B的头文件,在调用B的时候就可以不用指针public:A();intgeta();voidhandle();};#endif_A...原创 2021-10-23 19:46:41 · 3275 阅读 · 1 评论 -
C++ 创建文件
ofstream myfile; myfile.open(ROOT_FILE_PATH,ios::out|ios::app); if(myfile.is_open()){ cout<<"创建成功.\n"<<endl; } myfile.close();原创 2021-10-17 17:05:29 · 7968 阅读 · 0 评论 -
深入理解计算机系统第二章家庭作业2.6.2~2.6.6
**2.62编写一个函数int_shifts_are_logical(),在对int类型的数使用算术右移的机器上运行时,这个函数生成1,而其他情况下生成0。你的代码应该可以运行在任何字长的机器上。在几种机器上测试你的代码。答:int int_shifts_are_logical(void){ //求bit位 int i=sizeof(int)-1; int res=-1>>i; return res!=1;}答:int s...原创 2021-10-06 22:34:30 · 346 阅读 · 0 评论 -
Clion编译器编译C语言过程中出现的一个bug
在使用Clion编译器完成移位操作时,当位移值为32时。位移结果成功。当位移值为值为32的变量时位移操作不成功针对以上问题目前还无法得出结论,估计和编译器的实现有关。原创 2021-10-06 20:25:06 · 178 阅读 · 0 评论 -
深入理解计算机原理第二章家庭作业2.5.5~2.6.1
*2.55在你能够访问的不同机器上,使用show_bytes (文件show-bytes.c)编译并运行示例代码。 确定这些机器使用的字节顺序。#include <stdio.h>#include <string.h>typedef unsigned char * byte_pointer;void show_byte(byte_pointer x, int len);void show_byte(byte_pointer x, int len) {...原创 2021-10-05 23:13:45 · 507 阅读 · 0 评论 -
读研换方向思考
就读研换方向事情的思考 换方向这件事情,如果说大确实能够谈得上很大。因为,本身导师和实验室就没有涉及该方向的东西,什么东西都需要自己亲自做,开荒僻野。再加上,从当前最为火热,前景最好,最多人选择的方向投身到一个相对比较冷门,发文章困难,学习周期长的方向。 针对对错而言,我无法评判,但就内心感受着一次确实需要背负更大的压力和学习的要求。系统构造以及人工智能,一个是基建,一个是高楼大厦。一个是看不到的变化,一个是能切身体会并且可能高效落地的想法。 也许在别人看来,这个选择是不理智,...原创 2021-09-22 20:12:43 · 250 阅读 · 0 评论 -
浮点数的表示及相关知识详解
二进制小数: 点左边的位的权是2的正幂,点右边的位的权是2的负幂。刚好小于1的数,如0.111111将用简单的表达法1.0-ε来表示这样的数值。IEEE浮点数:定点表示法不能很有效地表示非常大的数字符号S决定这个数是负数(S=l)还是正数(S=0),对于数值0的符号位解释作为特殊情况处理。 尾数(significand) M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0〜1-ε 阶码E 的作用是对浮点数加权,这个权重是2的E次幂(可能是负数)。特殊浮点数:当.原创 2021-06-22 21:54:13 · 3122 阅读 · 1 评论 -
剑指offer刷题——调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入:[1,2,3,4]返回值:[1,3,2,4]示例2输入:[2,4,6,5,7]返回值:[5,7,2,4,6]答案:朴实无华的解法,通过牺牲空间,O(n),T(n)创建新的数组class Solution {public: /** * 代码中的类名、方法原创 2021-06-21 22:04:30 · 146 阅读 · 0 评论 -
整数运算:乘除详解
整数运算无符号乘法:C语言中的无符号乘法被定义为产生w位的值补码乘法:,C语言中的有符号乘法是通过将2w位的乘积截断为w位的方式实现的。我们认为对于无符号和补码乘法来说,乘法运算的位级表示都是一样的,机器可以用一种乘法指令来进行有符号和无符号整数的乘法。XDR库中的安全漏洞包含安全漏洞的代码与下面所示类似:/** Illustration of code vulnerability similar to that found in* Sun's XDR l.原创 2021-06-21 21:16:14 · 1261 阅读 · 0 评论 -
C++ Primer 2.3.3 节练习和答案
练习2.25:说明下列变量的类型和值。(a) int* ip,i, &r=i;(b)int i,*ip=0;(c)int* ip, ip2;答案:(a)ip为int型指针,i为int型变量,r为int型引用(b)i为int型变量,ip为int型空指针(c)ip为int型指针,ip2位int型变量...原创 2021-06-20 21:17:31 · 194 阅读 · 0 评论 -
C++Primer2.3.2 练习和答案
练习2.18:编写代码分别更改指针的值以及指针所指对象的值。int i=23;int *p=nullptr;p=&i;*p=13;练习2.19:说明指针和引用的主要区别。答案:指针是保存所指向对象的地址其本身是一个对象,引用是对象的别名其本身不是对象。练习2.20:请叙述下面这段代码的作用。int i=42;int *p1 = &i;*p1 = *p1 * *p1;答案:将指针pl指向i,并将其指向对象值改为42*42;练习2....原创 2021-06-20 21:14:30 · 315 阅读 · 0 评论 -
C++Primer2.3.1 练习和答案
练习2.15:、下 面的哪个定义是不合法的?为什么?(a) int ival = 1.01 ;(b) int &rval1 = 1.01;(c) int &rval2 = rval;(d) int &rval3;答案:(a)合法(b)合法(c)不合法,引用不是对象(c)不合法,引用必须初始化练习2.16:考查下面的所有赋值然后回答:哪些赋值是不合法的?为什么?哪些赋值是合法的?它们执行了什么样的操作?int i =0,&am...原创 2021-06-20 21:00:41 · 353 阅读 · 3 评论 -
复合类型:引用与指针
C++11中新增了一种引用:所谓的“右值引用”,当我们使用术语“引用”时,指的其实是“左值引用”。引用: 为对象起了另外一个 名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。int ival = 1024;int &refVal = ival;// refVal 指向ival (是ival的另一个名字)一般在初始化变量时,初始值会被拷贝到新建的对象中。程序把引用和它的初始值绑定在一起,一旦初始化完成,引用将和它的初始值对原创 2021-06-20 20:51:52 · 105 阅读 · 0 评论 -
剑指offer刷题——数值的整数次方
描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。示例1输入:2.00000,3复制返回值:8.00000复制示例2输入:2.10000,3复制返回值:9.26100复制示例3输入:2.00000,-2复制返回值:0.25000复...原创 2021-06-20 19:36:44 · 108 阅读 · 0 评论 -
整数运算(加减法)详解
2.7 整数运算——加减法无符号加法:考虑两个非负整数x和y,满足0≤x, y≤2w-1。每个数都能表示为w位无符号数字。无符号运算可以被视为一种模运算形式。无符号加法等价于计算和模上2w, 通过简单的丢弃x+y的w+1位表示的最高位,来计算这个数值。一个算术运算溢出,是指完整的整数结果不能放到数据类型的字长限制中去。当执行C程序时,不会将溢出作为错误而发信号。补码加法:举例:补码的非:位级补码非的第一种方法是对每一位求补,再对结果加1。...原创 2021-06-20 17:42:55 · 2888 阅读 · 0 评论 -
剑指offer——二进制中1的个数
描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入:10复制返回值:2原创 2021-06-19 22:03:08 · 94 阅读 · 0 评论 -
有符号数与无符号数详解
有符号数与无符号数符号转换:C语言允许在各种不同的数字数据类型之间做强制类型转换,强制类型转换的结果保持位值不变,只是改变了解释这些位的方式,C语言支持所有整型数据类型的有符号和无符号运算,大多数数字都默认为是有符号的,要创建一个无符号常量,必须加上后缀字符U。short int y = -12345;unsigned short uv = (unsigned short) v;printf("v = %d, uv = %u\n", v, uv);当执行一个运算时,如果它的一...原创 2021-06-19 21:17:44 · 922 阅读 · 5 评论 -
剑指offer刷题——矩形覆盖
描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,从同一个方向看总共有多少种不同的方法?比如n=3时,2*3的矩形块有3种不同的覆盖方法(从同一个方向看):输入描述:2*1的小矩形的总个数n返回值描述:覆盖一个2*n的大矩形总共有多少种不同的方法(从同一个方向看)示例1输入:0复制返回值:0复制示例2输入:1复制返回值:1复制示例3输入:4.原创 2021-06-19 16:49:04 · 122 阅读 · 0 评论 -
整型概述:有符号数与无符号数
整数C语言标准定义了每种数据类型必须能够表示的最小的取值范围,C和C++都支持有符号(默认)和无符号数。Java只支持有符号数。w位所能表示的值的范围。最小值是用位向量[00・・・0]表示,也就是整数值 0,而最大值是用位向量[11…1]表示。无符号数的二进制表示有一个很重要的属性,就是每个介于0〜2w-1之间的数都有唯一一 个w位的值编码。补码编码:符号位被设置为1时,表示值为负,而当设置为0时,值为非负。同无符号表示一样,在可表示的取值范围内的每个数字 都...原创 2021-06-18 21:22:04 · 1153 阅读 · 0 评论 -
C++ Primer 2.2.4 练习答案
j的值为100;输出:45原创 2021-06-17 21:58:10 · 180 阅读 · 0 评论 -
C++ Primer 2.2.3 练习答案
(a)double是保留字(b)正确(c)保留字(d)必须以字母或下画线开头(e)正确原创 2021-06-17 21:57:12 · 205 阅读 · 0 评论 -
C++ Primer 2.2.2 练习答案
(a)定义(b)声明并定义(c)声明不定义原创 2021-06-17 21:56:27 · 138 阅读 · 0 评论 -
C++ Primer 2.2.1 练习答案
(a)先声明后初始化int input_value;std::cin>>input_value;(b)存在信息丢失的风险 ,int i(3.14);(c)wage没有声明,double salary=9999.99;double wage=salary;(d)正确global_int初始值为0,local_int和local_str未被初始化。...原创 2021-06-17 21:55:39 · 185 阅读 · 0 评论 -
C++Primer之变量概述
变量变量提供一个具名的、供程序操作的存储空间,C++中的变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式、该空间能存储的值的范围,对C++程序员来说,“变量(variable)” 和“对象(object)” 一般可以互换使用。定义变量:类型说明符+一个或多个变量名组成的列表(变量名以逗号分隔,最后以分号结束。)int sum = 0 , value , // sum, va1ue ,units_sold 都是 intunits_sold = 0 ; //sum ,un..原创 2021-06-17 20:54:22 · 123 阅读 · 1 评论 -
剑指offer刷题day09——跳台阶扩展问题
描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。示例1输入:3复制返回值:4原创 2021-06-17 20:04:43 · 118 阅读 · 0 评论 -
C语言的各类运算概述
C语言的各类运算概述C语言的一个很有用的特性就是支持按位布尔运算。位级运算:对char数据类型表达式求值的例子:逻辑运算:逻辑运算符||、&&和!,分别对应于命题逻辑中的OR、AND和NOT 运算。逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE,它们返回1或者0,分别表示结果为TRUE或者 为FALSE。如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。移位运算:x<<k,x向左移动左位,丢弃..原创 2021-06-17 19:41:54 · 2505 阅读 · 3 评论 -
C++ primer 2.1.3练习及答案
(a)char,wchar_t,字符串,wchar_t的字符串(b)int,unsigned int,long,unsigned long ,八进制,十六进制(c)double,float,long double(d)int,unsigned int, double,float有区别,第一种赋值为十进制数赋值,第二种为八进制数且09为书写错误。(a)字符串”Who goes with Fergus?\n”(b)单精度浮点数,类型为float表示31.4(c)单精...原创 2021-06-16 21:32:48 · 281 阅读 · 0 评论 -
C++ Primer 2.1.2练习及答案
结果:带符号数会自动地转换成无符号数32429496726432-3200估计正确。原创 2021-06-16 20:44:09 · 156 阅读 · 0 评论 -
C++ Primer 2.1.1练习题及答案
主要区别在于其能表示范围大小,一般long long≥long≥int≥short无符号表示的值始终大于等于0,而带符号表示的值中有负数。float和double的区别在于精度和数值范围,一般情况下double优于float利率由于带小数,故选择double,本金一般值比较大选择整型int,付款选择int。...原创 2021-06-16 20:42:41 · 164 阅读 · 0 评论 -
C++ Primer 字面值
字面值常量:整型字面值:数据类型由值和符号决定,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进字面值的类型是 int, 1ong ,long 1ong 中尺寸是这种类型要容纳下当前的值的最小数据类型,同理,八进制和十六进制 面值的类型是能容纳其数值的 int unsigned ,int long ,unsigned long ,long 1ong ,unsigned long long中的尺寸最小者,如果最大的数据类型都放不下,将产生错误。 类型 short 没有字原创 2021-06-16 20:41:23 · 151 阅读 · 0 评论 -
C++ Primer 基本类型概述
类型类型检查:编译时期字节:可寻址的最小内存块,能容纳机器基本字符集中的字符字:,存储的基本单元称为"字( word )" ,它通常由几个字节组成基本内置类型: 类型选择:数值不可能为负时,选用无符号类型 使用 int 执行整数运算 在实际应用中,如果数值超过了int 的表示范围,选用 long long 在算术表达式中不要使用 char或bool ,只有在存放字符或布尔值时才使用它,char 在一些机器上是有符号的,而在另一些机器上又是无符号 浮点数运算选用 doubl.原创 2021-06-16 20:40:12 · 127 阅读 · 0 评论 -
剑指offer刷题day08-跳台阶
跳台阶中等通过率:37.72%时间限制:1秒空间限制:64M知识点递归题目 题解(75) 讨论(2k) 排行描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。...原创 2021-06-16 20:21:27 · 110 阅读 · 0 评论 -
基本数据类型:字符串、布尔值概述
基本数据类型字符串:C语言中字符串被编码为一个以null (其值为0)字符结尾的字符数组。每个字符都由某个标准编码来表示,最常见的是ASCII字符码。十进制数字x 的ASCII码正好是0x3x,而终止字节的十六进制表示为0x00,不同的机器类型使用不同的且不兼容的指令和编码方式。即使是完 全一样的进程运行在不同的操作系统上也会有不同的编码规则,因此二进制代码是不兼容的。二进制代码很少能在不同机器和操作系统组合之间移植文本数据比二进制数据具有更强的平台独立性。man ascii(查看ASCII表)原创 2021-06-16 17:35:14 · 748 阅读 · 0 评论 -
剑指offer练习day07
斐波那契数列算法知识视频讲解入门通过率:33.35%时间限制:1秒空间限制:64M知识点数组题目 题解(91) 讨论(2k) 排行描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。示例1输入:4复制返回值:3...原创 2021-06-12 21:08:35 · 77 阅读 · 0 评论 -
计算机表示之字的相关概述
字:字长决定虚拟地址空间大小(0~2w-1),当今大多数计算机字长为64位,根据字长不同的机器,不同数据类型的字节数不同。因此在编译的过程中要考虑可移植性,针对不同位系统。 C声明 32位机器 64位机器 char 1 1 short int 2 2 int 4 4原创 2021-06-12 20:49:09 · 210 阅读 · 0 评论 -
C++Primer练习1.6答案
#include <iostream>#include "Sales_item.h"using namespace std;int main(){ Sales_item item1,item2; cin>>item1>>item2; if(item1.isbn()==item2.isbn()){ cout<<item1+item2<<endl; return 0; }e...原创 2021-06-04 17:45:39 · 142 阅读 · 0 评论 -
C++Primer练习1.5.2答案
int main(){ Sales_item book,result; int flag=0,count=0; while(cin>>book){ if(flag==0){ result=book; flag=1; count=1; }else{ if(result.isbn()==book.isbn()){ count...原创 2021-06-04 17:44:16 · 185 阅读 · 0 评论 -
C++ 类与对象概述
定义类类型变量读写类:以两个#Include 指令开始,包含来自标准库的头文件时,也应该用尖括号(< >)包围头文件名 ,对于不属于标准库的头文件,则用双引 号( " " )包围。类对象的加法:附:文件重定向$ addItems <infile >outfileaddItems.exe可执行文件 infile读取销售记录 outfile输出结果成员函数:调用名为 isbn 成员函数 member function...原创 2021-06-04 17:38:59 · 78 阅读 · 0 评论 -
剑指offer练习day06
题目:转载 2021-06-04 17:03:09 · 86 阅读 · 0 评论 -
十六进制、二进制转换以及练习
现代计算机存储和处理的信息以二值信号表示,二值信号能够很容易地被表示、存储和传输。虚拟存储器:被视为字节数组,按字节(一个字节由8位组成。在二进制表示法中,它的值域是0000000〜11111111;如果用十进制整数表示,它的值域就是0〜255)为单位取值,取值标识为地址(C语言指针为字节的虚拟地址,编译器将指针同类型联系在一起并对其维护)十六进制表示:0x或ox开头,以16为基数,来表示位模式。十六进制(简写为“hex”)使用数字0〜9,以及字符A~F,来表示16个可能的值。十六进制.原创 2021-06-04 16:01:14 · 7492 阅读 · 0 评论