CPP基础1
来源:互联网 发布:读懂php wsdl中方法 编辑:程序博客网 时间:2024/04/29 05:48
wait
函数作为参数
c++ .h文件里枚举的引用
Hello World
#include <stdio.h>int main (){ printf("hello world \n");}
#include <iostream.h>using namespace std;int main(){ cout << "hello woeld" << endl;}
输入输出
格式化输出
cout << “xxx” << endl;
cout << dec << i; 转换成10进制输出
cout << hex << i; 转换成16进制输出
cout << oct << i; 转换成8进制输出
cout << setprecision(3) << f<< endl;
float f = 12.3233; 输出:12.3
cout << setw(10) << f <
正常输出
整数,字符,字符串,数组,指针
cout << i << endl; int i
cout << c << endl; char c
cout << ch << endl; char ch[10]
cout << ch << endl; char *ch = (char*)malloc(sizeof(char)*10)
输入
整数:int a; cin >> a;
字符:char c;cin >> c;
字符串:char ch[10];cin >> ch;
字符串:char *ch = (char*)malloc(sizeof(char)*10);cin >> ch;
常量
整数常量
- 12(十进制)、012(8进制)、0x12a(十六进制)
- 123L/l 长整形、123U/u 无符号整形
实数常量
- 12.5
- 指数 0.4312E2 = 43.12、.4312E2、12.0 可写成 12.e2
- 12.3f 是 float 类型默认是 double 类型
字符常量
- ’a’、’B’、ASCII码表里的,一些不可显示字符可用十六进制表示
- char c = ‘a’; 十六进制 char c = ‘\x61’
字符串常量
- ”a” 后面自动加个 ‘\0’ 结尾
bool 常量
- false、true
符号常量
- const int C = 10; 声明时必须赋值
const 和 #define区别
- const int C = 10; 声明时必须赋值
变量
声明:大部分声明变量时候分配内存了,里面有一个默认的值 int a; 默认a为0
定义:定义变量一定分配完内存,a = 3
- 外部变量声明时候不分配内存
- 声明同时定义 int a = 3; int a(3);
- 没有字符串变量,只能用数组char a[10], 指针 char *a; 需要开辟内存空间
- 变量存储类型
- auto:堆栈方式分配内存空间,暂时性存储,存储空间可以被若干变量覆盖使用
- register:存放在通用寄存器中
- extern:在所有函数和程序段中都可引用
- static:在内存中以固定的地址存放,整个程序运行期间都有效
运算符与表达式
1. 算数运算符与算术表达式
符号:+、-、*、/、%、++、- -
特点:+(正号)、-(负号)、/(两个整数运算结果舍掉小数部分)、%(只能是两个整数)、++(前置后置)、–(前置后置)
例子:cout<< i++; cout<<++i;
2. 赋值运算符与赋值表达式
符号:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
特点:语法简介
例子:int a = b = c = 5; 先给 c 赋值之后是 b 。。。
3. 关系运算符与关系表达式
符号:>、>=、<、<=、==、!=
特点:是逻辑运算的一部分
例子:结果为 bool 值
4. 逻辑运算符与逻辑表达式
符号:!、&&、||
特点:优先级依次降低
例子:结果 bool 值
5. 条件运算符与条件表达式
符号: ? :
特点:相当于简单的 if(){} else {} 语句
例子:int c = a > b ? a : b; c 等于 a 和 b 中较大的
6. “,”
符号:”,”
特点:将若干表达式连接起来
例子:int a; a = 3 * 5, a * 4; 结果 不等于 60 ?
“,” 运算符级别最低
/* 1. s + 2 2. d + 4 3. 因为有(), 算 “,” 运算 4. “,” 自左到右结合,所以()里的结果是 7 5. 12 + 7 6. “=”运算 */int a, s, d;s = 2;d = 3;a = 12 + (s + 2, d + 4);//19cout << a << endl;/* 1. 3 * 5 2. b * 4 3. b = 15 4. ,号运算 */int b = 1;b = 3 * 5, b * 4;cout<< b << endl;//15
7. sizeof
符号:sizeof
特点:可以得到基本或特殊类型占用内存大小
例子:int a; sizeof(a) , sizeof(int)
8. 位运算符
符号:&、|、^、~、<<、>>
特点:C/C++能对数据的二进制进行操作
例子:
- &:1 & 1 等于 1 其他为 0
- |:0 | 0等于 0 其他为 1
- ^:相同为 0,不同为 1
d = a ^ b ==> a ^ d结果b 或 b ^ d结果a
int a, b;交换位置 a = a ^ b; b = a ^ b; a = a ^ b
- ~:二进制每一位进行取反,再进行反码运算 +1
正数:源码、反码、补码都是自己
负数:源码高位是 1(符号位)、反码除符号位的每位源码取反、补码是反码加 1
正数:是源码 1 在计算机里的二进制是 0000 00001
负数:是补码 -1 在计算机里 1000 0001 取反码 1111 1110 再取补码 1111 1111,1111 1111就是 -1 在计算机里的二进制表示形式。
int i = ~3; -4
3源码0000 0100 经过~ 1111 1011在计算机里~3的二进制表示是 1111 1011是负数的补码,反推补码应该是 1111 1010,再推源码 1000 0101 就是-4
int i = ~-3; 2
同上面推到一样
- << 或 >>
2 >> 1: 2的二进制数右移 1 位
2 << 1 :2的二进制数左移 1 位
0000 0010 (2 << 1) 0000 0100 = 4
1111 1110 (-2 << 1) 1000 0100 = -4
0000 0010 (2 >> 1) 0000 0001 = 1
1111 1110 (-2 >> 1) 1000 0001 = -1
负数的二进制表示?
9. 运算符优先级
结合方向、优先级、一元还是二元运算符
p33 没太看懂
10. 数据类型隐含转换
- 二元算数和关系运算,操作数1 和 操作数2 类型要求一致转换规则
char - short - int - unsigned - long - unsigned long - float - double - 逻辑运算&&,||,!参与运算必须是 bool ,其他类型转换规则,非0转true,0转false
- 位运算只能是整数
- 赋值运算将等会右边的结果转换成左边的类型
int i = 12.3 + 4.3;
cout << i << endl; i = 16
11. 强制类型转换
- float f = 12.3; int(f) , (int) f 结果 12
- 不安全,f 精度有损失 12
- f 本身没有改变
- 函数转换
static_cast、dynamic_cast、const_cast、reinterpret_cast
数据类型
bool、char、short、int、long、float、double
void、union、enum、struct、
typedef、sizeof
char, short, int, long前面加上 unsigned
double 前可加 long
基本数据类型
char
- char s = ‘a’ 等于整数 97,%c 输出 a、%d 输出 97
- 占一个字节,ASCII -128~127, 用 %c 输出对应字符,%d输出 ASCII 对应的十进制整数,相当于整数超过127溢出。
负数范围比整数多一个???
- 例如 char 一个字节 8 位,范围-128~0,0~127
- 去掉一个符号位剩下 7 位最大,
27 0 111 1111 = 127 - 0~127是128个数字,负数转换成整数,应该是安位取反末尾加 1,1 000 0000 整数就是0,取反 0 111 1111 + 1 = 1000 0000 -128
整数范围
- 内存占字节 * 8 = x,
−2x−1 ~0, 0~2x−1−1
- 内存占字节 * 8 = x,
16位32位
- 16 int 占 2 个字节,32 int 占 4 个字节
查看占用字节数 sizeof
特殊数据类型
1.共用体/联合体 union
union 几个不同的类型变量共用同一组内存,减少内存的开销。
例子 飞机,运输机运输燃料多少 float、轰炸机携带炸弹 int,飞机的结构体这两种类型可以用 union 以减少内存的使用。
声明使用
union Name{ int i; float f;};Name name;name.i = 10;name.f = 10.2;cout << name.f << endl;
错误 union Name name;
特殊使用
1.无名联合体/共用体
union{ int i; float f;};i = 1;f = 2.0;cout << f << endl;
无名union的使用和其他变量一样,只是共用一块内存
例子 结构体嵌套无名联合体
struct Name{ union { int i; float f; };};Name name;name.i = 10;cout << name.i << endl;
2.证明共用一块内存
f = 2.2;i = 1;cout << f << endl;
f 输出 1.4013e-45 如果后给 f 赋值可以正常输出
2. 结构体 struct
struct 不同的数据类型组成一种新的类型
例子 新的学生类型由,学号、姓名、性别等类型组成,根据需要组成自己想要的类型
声明使用
1.
struct Name{ int i; float f;};// Name name; 这种声明也行struct Name name;name.i = 10;cout << name.i << endl;
2.
struct Name{ int i; float f;} name;name.i = 10;cout << name.i << endl;
3.
struct Name{ int i; float f;} name = {11, 10.2};cout << name.i << endl;
特殊形式
结构体方法调用
3. 枚举 enum
enum 只有有限的几种可能性
例子 一场足球比赛只用胜、平、负三种可能,枚举把数字变成文字便于理解
声明使用
enum Name{ sun, mon, tue};// Name name = mon; 声明也可以enum Name name = mon;cout << name << endl;
枚举里声明赋值必须是枚举里的
特殊形式
1.默认值
enum Name {sun, mon, tue}; 默认 0, 1, 2
enum Name {sun, mon=9, tue}; 默认 0, 9, 10
在前一个基础上加 1,默认从 0 开始
2.与整数赋值
enum Name name;int i = 1;// name = i; 错误name = (Name) i;
整数必须经过强制转换后才能给枚举赋值, 枚举可以给整数赋值
3.强制转换后的整数不在枚举的范围
enum Name{ sun, mon, tue };//0, 1, 2enum Name name;int i = -1;name = (Name) i;cout << name << endl;
也能正确赋值
4.例子遍历枚举
enum game{ WIN, LOSE, TIE, CANCEL};int count;for(count = WIN; count <= CANCEL; count++){ cout << count << endl;}
c++类里的枚举
4. 类型从命名 typedef
typedef 给类型区别名
例子 便于理解
使用声明
typedef int int16, int32;int16 i1 = 10;int32 i2 = 20;
语句
各种语句的嵌套使用
break、continue、return、goto、
do … while、while … do、for
if … else、switch case、switch default
1.if else
if(){};
if(){} else{};
if(){} else if(){} else{};
多种情况
2.switch
switch( n ){
case 常量1: 语句
…
default : 语句
}
- 常量1 整形,字符或枚举
- case后不能用 {}
- n 与任意一个 case 后的常量n 匹配,常量n+1, 常量n+2…后的语句都会执行,因此匹配常量n 后必须break跳出switch
- 几个case连用任何一个匹配都执行同一条语句
int i = 3;switch(i){ case 1: case 2: cout << "2" << endl; case 3: cout << "3" << endl; case 4: cout << "4" << endl;}
输出3,4,如果 i=1 输出 1,2,3,4
3.while语句
while(){}
do {} while();
区别 do while 不管 while 后的条件是否成立都会执行一次
4.for语句
for(1表;2表;3表){}
- 1,2,3表都能省,但 ; 不能省
- 2表没有就是死循环
- 去掉1和3表相当于while
int i;int j;for(i=0, j=0; i < 5; i++){}
for(;;i++) 与 for(;;++i)一样
5.控制语句
- break:switch、for、while
- continue:for、while、switch不能用
- goto
关键字
其他
- CPP基础1
- cpp 基础
- Cpp基础
- Symbian Cpp基础语法要点(1)
- CPP基础2
- cpp基础4
- cpp基础5
- CPP入门基础
- Symbian Cpp基础语法要点(2)
- MFC基础类源码CPP实现文件
- 1stclass.cpp
- 1_to_100.cpp
- 再看cpp primer(1)
- Sample2.1:myfirst.cpp
- [CPP]static思考-1
- CPP学习笔记-1
- Effective cpp 读书笔记1
- cpp代码记录1
- Splay
- why C++
- final、finalize、finally
- android drawable打造圆形,圆角图片
- 使用触发器记录数据库删除操作
- CPP基础1
- 如何实现在cmd输入中文
- 【Android开发经验】Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- Android设备上opencv开发:获得Camera数据
- arm 自制OS
- 链表结构
- 2 URL
- G2R(Game to Reality) 游戏行业的O2O
- IP之NAT(二)