C++MOOC学习笔记(一)
计算机程序设计(C++)
西安交通大学 赵英良
前两周内容笔记
cout<< sizeof(int) <<endl; //整形数的字节数
- 字符串占的字节数等于字符串长度+1。因为末尾加了个结束符,用 ‘\0’ 表示,数值上是0。
Hello World'\0'
- 空字符,’\0’,ASCII-0;空格,’ ’ ,ASCII-32。
- 转义字符,用一个反斜杠和一个字母(或数字)表示,它也是 1 个字符。
cout<< '\''; // 显示单引号
cout<< '\'''; //显示双引号
- 水平制表符 \t
cout<< 1234 << "\t" << 12 << '\t' << 456 << endl;
cout<< 12 << "\t" << 1245 << '\t' << 456 << endl;
- 转义字符
\r //回车键
\t //制表符 列出现在第0、8、16、24列
\f //分页符
\b //退格符
\0 //字符结束标志,后面的都不显示
\nnn // 八进制如: \141 是十进制的97 显示 a
- 符号常量
① const <类型说明符> <符号常量名> = <数据>;① const <类型说明符> <符号常量名> = <数据>;
② #define <符号名称> <数据> 程序编译时,先将<符号名称>全部替换为<数据>,然后正式编译,所以这样的说明称为编译预处理。
#define PAI 3.14
编译前把 PAI 替换成3.14,编译时 PAI 这个符号已经不存在了,不是C++语句。 - 变量的说明也叫变量的声明。变量意味着编译系统会给这个变量在内存中分配一个存储单元。所以变量的声明也叫变量的定义。
- 算术运算,使用数学函数需要在程序开头写
#include <cmath>
。
前置运算符的结果是加 1 或减 1 之后的结果;后置运算符的结果是加 1 或减 1 之前的结果。
算术运算符的优先级:% 和 * 、/ 优先级相同;后置++、–的优先级>前置++、–的优先级>乘除的优先级。使用圆括号标明运算顺序。 - 相同类型的数据进行算术运算,结果还是这种数据类型;不同类型的数据运算,默认向级别高的类型转换,
①(低)short,char→unsigned→long→double(高)
②单目运算符>双目运算符>三目运算符
强制类型转换 (<类型>)x 或 <类型>(x)
(double)a/b
int(3.0/2.0)
高精度向低精度转换会损失有效数字。 - 逻辑运算 与或非
与运算 &&
或运算 ||
非运算 ! - 位运算 C++中只能整数进行。
与(and)、或(or)、取反(not)、异或(xor)、左移、右移。
按位“异或” :相同位为0,不同为1。
移位:将二进制的每一位向左或向右移动指定的数位。移出的数舍去,不足的位补零。
位运算符 与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)。
例子:
a=0110 1001B 105 69H 0X69
b=0101 1110B 94 5EH 0X5E
c=a&b; c=a|b; c=~a; c=a<<2; c=a>>2;
左移一位相当于乘以2,右移一位相当于除以2。
注意点:一个&和两个&&是不同的,| 和 || 也不同,在输出中使用移位运算的表达式时,要加括号
cout<<(4<<2)<<endl;
- 特殊运算符
字节数运算符:sizeof(<常量、变量、数组、对象>)、sizeof(<类型>)、sizeof(<表达式>)。
条件运算符:<条件> ? <表达式1> : <表达式2> 如果条件为true,整个表达式的值为表达式1的值;如果条件为false,则整个表达式的值为表达式2的值。分段函数例子:y =( t>= ? 1:0);
注意:<表达式1> 和 <表达式2>的值应具有相同的类型,或能转换为相同的类型。
y = (x>1 ? 1:“error”); //错误 一个是数,一个是字符串,两个类型也不能自动转换。
逗号运算符 y = (a=a+1, b=b+2, c=c+3); //最右边的值赋给 y 。 - 混合运算的类型转换 转换方式:①字节少的向字节多的转换;②精度低的向精度高的转换;③有符号向无符号转换。
赋值:向左值类型转换。
double a = 8.12;
int k;
k = a; // a 转换为 int 型,舍去小数,k 为 8。 - sqrt 后的结果是 double 型。
- 字符和整数 ①整数和字符在内存中都是整数;②整数:存放数的二进制形式,占4字节;字符:存放其 ASCII 码的值,占一个字节。③输出时,当整数看待,显示数的十进制形式;当字符看待,显示的是 ASCII 值是这个数的字符(该数小于128)。
int a = 65; // int a='a'; 这两个是一样的
\r
回车是回到本行开头;\n
换行是到下一行开头。