1:在赋值运算中不同类型的相互转换:
(1):将整形赋给浮点型变量时,是以指数的形式存储在的。 (2):若将double型的赋给float型时,若值超过了float的范围,就会出错,但是调试不会报错,但是在运行时出现非预期的符号:
(3):将int 或float double long short 等类型的变量给char型赋值时,只截取最后一个字节对char型的变量进行赋值。
(4):将signed型给unsigned型赋值时,连同符号位一起传送。并且,负数是以补码形式存放,在传输过程中,并不会进行原码补码的变换。详见p37.
这里的这个数字就是2^32-1,即4个字节32位全为1所对应的十进制数。
2:左值(l-value)和右值(r-value)
(1):什么是左值:左值指的是如果一个表达式可以引用到某一个对象,并且这个对象是一块内存空间且可以被检查和存储,那么这个表达式就可以作为一个左值。 (2):什么东西能作为左值:左值表示存储在计算机内存的对象,左值必须能够被修改 如变量(a),引用(&a),或者是指针a,表达式(a=1+2),这里的括号不能不写,这个表达式算完以后得到的仍然是a。 (3):什么是右值:右值指的是引用了一个存储在某个内存地址里的数据,包括常量区,栈区等。 (4):什么东西不能作为右值:由这个定义可以知道,如果左值的数据类型允许的话,几乎所用值都能作为右值。
特别要注意的是,++/——(前置)加上一个变量,如(++n),这个变量可以作为左值。
3: 逗号表达式
具体形式:(表达式1,表达式2,表达式3??)
结果:逗号表达式的最终结果等于最后一个表达式运算出来的结果,但是一定会受到前几个表达式的影响,如赋值操作。 应用:(1):赋值语句:如 a=(表达式1,表达式2) (2):条件语句?:: 如a=(表达式1,表达式2)?(表达式3):表达式(4);
4:运算符的结合性:
只要记住四类自右向左结合的运算符
(1)赋值运算符(包括由“=”衍生出来的)如“=”,“+=”,“%=”。
(其中也包括了++,——的运算符((前置))
(2)?:运算符
(3)throw 抛出运算符(目前不要求)
(4)<<(输出流操作符) 这个在附录B中没有写出 (5)+/-(正/负 不是加减),*(间访),&(取地址)
这里写的并不完全,但是基本只是考这一些,具体的可以查看附录B。
5:空语句:
即只有一个“;”的语句。什么都不做。
这样的写法是没有问题的。
6:表达式与语句的区别
7:C++编译器自带一些函数(语句)
并不是所有的东西都包含在头文件当中的,c++编译器本身也提供一些语句,比如if语句,赋值语句,for语句等。所以头文件并不是必不可少的。
8.关于\\n 和 \\r(回车)的区别
\\r 表示回车,但是并不和我们平时所用的Enter 键作用相同。它的意思是将光标移到这一行的开头。在windows操作系统中,回车的完整写法应该是\\n\\r。单纯的使用\\r并不能换行。
可以看出来,在输出a(10)以后,光标并没有移到下一行而是到了这一行的开头,这个后果就是再输入别的内容时,第二行的东西会被替换掉。 所以,\\r和\\n 要区分清楚。
9:输入输出控制符
(1) 需要在头文件加上
dec 10进制 hex 16进制 oct 8进制
这里的三个字母都必须是小写的,因为c++编译器区分大小写。
setfill(n) 向设置宽度的空白区域填充字符n(可以是字符常量或是变量)
setprecision(n) 设置有效数字个数
但是 当setprecision(n) 与fixed(固定小数点)连用时,就是设置小数点后数字个数。
left/right 设置对齐方向 setw(n) 设置输出宽度
要注意的是,这里的setw(n) 设置的宽度只多不少,也就是说,如果输出123456,但是你设置了setw(4),那么输出的不是1234而仍然是123456.并且,setw(n)是默认右对齐的。 showpos 显示正负号 scientific 用科学计数法
fixed 固定小数点
(3) 区分只起一次作用的控制符和一直生效的控制符。
只作用一次的有: setw(n)
一直起作用的有: setfill(n) setprecision(n) fixed
left/right showpoint
showpos scientific
(4) 一些另外的要注意的
在默认情况下,输出保留6个有效数字,并且遵循四舍五入原则。
在使用了scientific和fixed+ setprecision(n)的这两种情况下,保留的有效数字是按小数点后来计算。
10: 转义字符\\ 对字符型常量的表示
\\x 后面跟一到两位的16进制数 \\ 后面跟一到三位的8进制数
遵循贪吃原则,即尽可能多的包含后面的字符。
特别的,这个方法只能用于表示字符型常量,下图的使用方式是非法的。
只能用”\\120”这种方式来表示一个字符型常量。
11: 关系运算符之间的优先级(附录未提及)
算数运算符>关系运算符>赋值运算符
即(+ - * /) > (>,>=,<,<=) > (==,!=)
c>a+b 等效为 c>(a+b)。 c==a>b 等效为 c==(a>b)
12: 逻辑运算的注意事项
(1):逻辑运算的值只有两种true(1)或者false(0)。