c++基础学习记录一

程序中的数据实在内存中以二进制存放的,数据类型用来说明数据的类型,确定数据的解读方式。C++基本数据类型有整形、浮点型、字符型和布尔型。

整形分为3种,

short :占2字节,16bit。无符号短整型取值范围位0~65535。如果16个比特位都是1代表无符号短整型的最大值		   的存放形式。有符号短整型的取值范围是 -32768~ 32767,原因是最高位是符号位,当取最大值时,最高位为    0,取最小值时,最高位为1.
int :占4字节,32bit.分为sighed int :0-4294967295;unsighed int:-2147483628 ~2147483627.
long:占4字节,32bit.
#include  // 短整型、整形、长整型的最大值和最小值函数在limits头文件中 
cout << "short :\t\t" << "最大字节数:" << sizeof(short) ;
cout << "\t最大值" << (numeric_limits<short>::max) ();
cout << "\t最大值" << (numeric_limits<short>::min) ();

浮点型分为2种

单精度浮点型float:用来表示带有小数部分的实数,占4字节,32bit.包括符号位1位,阶码8位,尾数23位,取值范围为 - 3.4E38 ~ 3.4e38,最多有7位十进制有效数字。
双精度浮点型 double:占有8字节,64bit.取值范围为 -1.7E308 ~ 1.7E308.有效数字最高15位。

字符型为2种

字符型 char :长度是1,智能容纳ASCII码中的字符,也就是英文字符。单引号(’‘)表示。占有1字节,8比特位。取值范围 0-255.

char mychar;
mychar = 'a';

计算机在存储字符时并不是存储字符实体,而是只存储该字符在字符集中的编号。也就是其ASCII码。无论在那个字符集中,字符编号都是一个整数,从这个角度看,字符类型与整数类型本质上没有区别。用户可以给 字符类型赋值一个整数,或者以整数的形式输出字符类型。反之也可以。

char x1 = 'A';
char x2 = 65;
int x3= 'B';
int x4 = 66;

宽字符型 wchar_t :用来容纳Unicode码表中的字符,占有2字节。

//实际上是一个自定义类型
typedef wchar_t short int;//本质上是一个短整型

转义字符: c++中,一个字符除了用它的实体表示,还可以用编码表示。这种用编码值来间接表示字符的方式称为转义字符。以 \ 或 \x 开头,\开头后面跟八进制的编码值,\x开头后面跟十六进制的编码值。
八进制形式的转义字符最大是 \ddd 即 \177;
十六进制形式的转义字符最大是 \xdd 即 \7f
对于ASCII码值,0~31为控制字符,不可见也不可输入,只能用转义字符表示。

布尔型 bool : true ,false

占用1个字节。

位运算符

是把数字看作二进制来进行运算的,
^ 按位异或运算符:当两个对应的二进位相异时,结果为1.
~ 按位取反运算符:对每个二进制位取反。
<< 左移动运算符: 运算数的各二进位全部左移若干位, ‘<<" 右边的数指定移动的位数,高位丢弃,低位补0. >> 右移运算符
C++中的数据只有三种:八进制 十进制 十六进制,所以在进行位运算的时候,需要先将参与运算的数据转化为二进制,
负数在计算机内存中是按照补码形式存储的,原码与补码的转换方法是:除符号位外,全部求反,尾部加1.
如 -3 求反后是 2;3求反后是-4.

自增与自减

++ 在前面叫前自增,++x 表示先自增运算后进行其他操作;
++ 在后面叫后自增,x++表示先进行其他操作再进行自增操作。

数学函数 cmath头文件

#include 
#include 
using namespca std;
int main(){
	cout << "-5的绝对值是:" << fabs(-5) <<endl;
	cout << "大于或等于5.2的最小的整数值是:" << ceil(5.2) << endl;
	cout << "小于或等于 5.2 的最大整数值是:" << floor(5.2) << endl;
	cout << "100的平方根是:" << sqrt(100) << endl;
	cout << "e的三次幂是:" << exp(3) << endl;
	cout << "5的3次幂是:" << pow(5,3) << endl;
	cout << "100的自然对数是: " << log(100) << endl;
	cout << "100的常用对数是:" << log10(100) << endl;
	cout << "16除以7的余数是:" << fmod(16,7) << endl;
	return 0;	
}

随机函数

int  rand();// 返回一个范围在0~RAND_MAX 之间的伪随机数,RAND_MAX 至少是32767.
void srand(unsigned seed); //随机数发生器的初始化函数 如果使用相同的种子后面rand()就会出现一样的随机数。
//常常使用系统世间来初始化,即使用time()函数来获得系统时间,它的返回值为从00:00:00 GMT,January 1,1970到现在所持续的秒数,
//然后将time_t型数据转化为(unsigned)型再传给srand()函数,即srand((unsigned) time(&t))或者srand((unsigned) time(NULL)).
#include 
#include 
#include 
using namespace std;
int main(){
	int i;
	srand((unsigned) time(NULL));
	for (i =0; i<12; i++) 
		cout << "第" << i+1 << "随机数是:" << rand()%100 << endl; //显示0-100之间的12个随机数。
	return 0;
}

函数的参数

函数的形式参数就像函数内的其他局部变量,在进入函数被创建,退出函数时被销毁。

传值调用

是把参数的实际值复制给函数的形式参数,在这种情况下,修改函数内的形式参数不会影响实际参数,默认情况下, C++使用传值调用的方法来传递参数。

void swap(int x, int y){
	...
}
int main(){
	...
	swap(a,b);
	...
	return 0;
}
引用调用

是通过指针传递方式形参为指向实参地址的指针,当对形参的指向进行操作时,相当于对实参本身进行擦作。

void swap(int *x, int *y){
	...
}
int main(){
	...
	swap(&a, &b);
	...
	return 0;
}

递归函数

一个函数在它的函数体内调用自身称为递归调用。执行递归函数将反复调用自身,没调用依次就进入新的一层,当最内层的函数执行完毕后,再一层一层的由里到外退出。

内联函数 inline Function

在调用函数时会建立栈帧,增加了额外开销,为了减少开销,C++提供了一种高效的方法,即在编译时将函数调用处用函数体替换。

inline void swap(int *a, int *b){

}
int main()
{
	swap(&a,&b);
}
// 计算一个数为两个质数之和
#include 
using namespace std;
int myprime(int n){    //判断一个数是不是质数
	int  i;
	int isprime = 1;
	for (i=2 ; i<= n/2; i++){
		if ((n%i) ==0) {
			isprime =0;
			break;
		}
	}
	return isprime;
}
int main(){
	int n,i;
	int flag =0;
	cout << "input a number:";
	cin >> n;
	for (i=2, i<=n/2;i++){
		if (myprime(i) ==1) {
			if (myprime(n-i)==1){
				cout << n<< "=" << i<< "+" << n-i<< endl;
				flag =1;
			}
		}
	}
	if (flag ==0{
		cout << n << "不能被分解为两个质数。" << endl;
	}
	return 0;
}

你可能感兴趣的:(c++基础,编程语言)