C++系列文章目录
第一章 C++基础
一、简单的C++程序
一个简单的C++程序:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
return 0;
}
二、基本数据类型
1.变量定义
#include <iostream>
using namespace std;
int main()
{
int a = 5;
int b, c = a, d = 10 / 2;
return 0;
}
补充:typedef
2.常见变量及范围
类型 | 关键字 | 字节长度 | 范围 |
---|---|---|---|
布尔 | bool | ||
字符 | char | 1 | -128~127(-27-1 ~ 27) |
整型 | int | 4 | -32768~32767(-215 -1 ~ 215) |
浮点 | float | 4 | -3.4 * 1038~3.4 * 1038 (7位有效位) |
双浮点 | double | 8 | -1.8 * 308 ~ 1.8 * 308 (15位有效位) |
补充:
3.常用特殊字符
4.枚举符——enum
枚举类型定义语法
enum COLOR{ RED,BLUE,GREEN,WHITE,BLACK};
// COLOR是枚举类型名,它不是变量名,不占内存空间。
// 枚举类型规定枚举类型名和枚举的取值范围
//RED BLUE是枚举符,枚举符是一种符号常量,在内存中表示以整型数。如果没有专门指定,第一个符号常量的枚举值是0,其他的依次+1。
枚举值指定语法
enum COLOR{RED = 100, BLUE = 200, GREEN, WHITE = 400};
//例中GREEN未被赋值,GREEN的值为201
定义枚举类型的变量
COLOR paint = GREEN;
// 枚举变量paint,用枚举符GREEN所代表的枚举值初始化
// 枚举类型的变量取值只能取枚举类型定义时规定的值,不饿能用整数值赋给枚举变量。
paint = 200; //error:cannot convert from 'const int' to 'enum paint'
5.常量
常量定义
const double pi = 3.1415926;
常量初始化细节
const int size = 100 * sizeof(int) //ok
const int number = max(15,23) //error
//sizeof()是C++的基本操作符,在编译之前可以确定,所以第一个常量定义合法
//max()是函数。函数要求在程序开始运行时才能求值,不能在编译之前确认值,所以是错的。
关于#define
在C中可以使用
# define PI 3.1415926
在C++里可以用,但是最好不用
三、I/O流控制
1.cout和cin
//way1
cout << "This is cout.";
cout << endl;
//way2
cout << "You"//行末无分号
<< "can"
<< "try"
<< endl;
//way3
cout << "Right" << "now" << endl;
//way1
int age;
cin >> age;
//way2
int i;float f;double l;
cin >> i >> f >> l;
2.控制符(manipulators)
控制符是在头文件<iomanip>中定义的对象,可以直接将控制符插入流中。
-设置值的输出宽度setw(n)
-输出八进制数和十六进制数hex\oct\dec
-设置填充字符setfill()(一般和setw(n)合用)
-左右对齐输出left\right
-强制显示小数点和符号showpoint\showpos
3.控制浮点数值显示
- setprecision(n):可控制输出流显示
浮点数的数字个数
,即表示有效位数。 - setprecision(n)和fixed()合用:可以控制
小数点右边的数字个数
,即setprecision(n)表示小数位数。 - setprecision(n)和scientific合用:可以控制
指数表示法的小数位数
,即setprecision(n)表示小数位数。
以下为实例代码:
#include<iostream>
#include<iomanip>//要用到setprecision()
using namespace std;
//---------------------------------------
int main()
{
double amount = 22.0/7;//有.会有小数,无.会是整除
cout << amount << endl;
cout << setprecision(0) << amount << endl;
cout << setprecision(1) << amount << endl;
cout << setprecision(2) << amount << endl;
cout << setprecision(3) << amount << endl;
cout << setprecision(4) << amount << endl;
cout << fixed << setprecision(8) << amount << endl;
cout << scientific << amount << endl;
cout << setprecision(6);//用流的默认有效位数为6位
return 0;
}
//输出分别为:(此行不输出)
//3.14286
//3
//3
//3.1
//3.14
//3.143
//3.14285714
//3.14285714e + 00
流的默认有效位数为6位
4.printf和scanf
使用printf()最好加上头文件cstdio
①printf()一般格式
printf(格式控制字符串,输出项1,输出项2)
- 格式控制字符串:有格式说明也有普通字符
- 格式说明:由"%"和格式字符组成,如%d 、%f等。
- 普通字符:就是原样输出的字符,如’,'。
- 输出项:需要输出的数据或表达式。
以下为示例代码:
#include<stdio.h>
void f()
{
int a = 10, b = 20;
printf("%d, %d",a,b);
}
②格式符
- %d:用来输出十进制整数,可以有长度修饰
- %nd:设置输出宽度为n
- %ld:设置输出为长整型
int a = 28, b = 38;
long c = 289868;
printf("%5d,%5d\n %ld\n",a,b,c);
printf("%3ld\n %7ld\n %d\n",c,c,c);
//输出结果为:(此行不输出)
//28, 38
//289868
//289868
//289868
//289868
- %o和%x:八进制和十六进制输出
- %u:以无符号十进制整数输出。
以下为实例代码:
unsighed int a = 65533;
printf("a = %d, %o, %x, %u, %7u\n",a,a,a,a,a);
//输出:
//a = 65533, 17775, fffd, 65533, 65533
- %c:字符方式输出,如果一个整数的范围在0~255,也可以用字符方式输出。
- %s:字符串方式输出,如果字符串长小于指定的宽度时,可以选择左对齐和右对齐。也可以选择字符串的前n个字符。
- %-5.3s:‘-'表示左对齐,如果没有负号默认右对齐。.3表示截取字符串的3个字符。
以下为示例代码
printf("%3s,%-5.3s,%5.2s\n","hello","hello","hello")
//输出:
//hello,hel , he
-
%f:用来以小数方式输出,可以指定宽度和小数位数,规定左右对齐。
- 默认的小数位数为6
- %-5.3f:‘-'表示左对齐,如果没有负号默认右对齐。.3表示小数取3位。
- %08.3f, 表示最小宽度为8,保留3位小数,当宽度不足时在前面补上0
-
%e:以指数形式输出浮点数。
③scanf() 一般形式
scanf(格式控制字符串,地址1,地址2)