书写复合表达式时:
1、确定计算次序时最好用括号加强
2、如果改变了某个运算对象的值,在表达式其他地方就不要再使用这个运算对象,编译器会出错。
求余和乘除同运算级,大于加减。
负数的取余取模运算,假设m,n均为正整数
(-m)/n=m/(-n)=-(m/n)
m%(-n)=m%n,
(-m)%n=-(m%n)
(-m)%(-n)=-(m%n)
逻辑与&&和逻辑或||都是先求解左边表达式,当且仅当左侧表达式无法确定整个式子的值时再计算右侧的表达式,这种策略叫做短路求值。
逻辑与&&仅当左侧成立时再求解右侧;
逻辑或||仅当左侧不成立时再求解右侧;
赋值运算符:当左右两侧的对象类型不同时,右侧的运算对象将转化为左侧运算对象类型。
移位运算符的优先级不高不低,介于中间,比算数运算符的优先级低,但比关系运算符、赋值运算符和条件运算符的优先级高。
sizeof运算符允许我们使用作用域运算符来获取类的大小,而不用通过访问类的成员。
switch语句中,case标签必须时整形常量表达式。如果case后没有break将会顺序执行下一条case语句。如果没有任何一个case标签能匹配,将执行default分支。
=======================================================
switch语句识别字符中遇到的关于标识符的问题
在Windows中:
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
'\n' 换行,换到当前位置的下一行,而不会回到行首;
在Unix系统里:
每行结尾只有“<换行>”,即"\n";Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里:
每行结尾是“<回车>”,即"\r";。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
‘\0’和‘0’的区别。有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上,没有的话网上查查哦。请看第一个ASCII码,对是0,对应的字符是(Null),其实就是‘\0’,即空字符。判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束。而字符‘0’对应的ASCII码是48,48对应的十六进制数就是0x30,通常我们在编程的时候,用字符转化为数字的时候经常要用到,比如要将‘8’转换为数字8,在语句中这样写就可以了,“ 8+‘0’”。这里的8就是数字。字符‘0’和数字0的区别:前者是字符常量,后者是整形常量,它们的含义和在计算机中的存储方式截然不同。但是字符常量可以像整数一样在程序中参与相关运算。
“0”和‘0’的区别。首先“0”是字符串常量,字符串常量是由一对双引号括起的字符序列。‘0’是字符常量,字符串常量和字符常量是不同的量。1:字符常量由单引号括起来;字符串常量由双引号括起来。2:字符常量只能是单个字符;字符串常量则可以含一个或多个字符。
============================================================================
不确定迭代次序使用while循环,确定的情况使用for循环。
基本语句包括条件,分支,循环,都比较常见。这里介绍以下范围for语句。语法形式如下
for(declaration : expression)
statement
expression必须是一个序列,可以是花括号的初始值列表、数组、vector或者string类型,他们的共同点是拥有能够返回迭代器begin和end成员。
declaration定义一个变量,序列中的每个元素都能转化为这个变量的类型,最简单的办法是使用auto类型说明符。如果需要修改序列中的值,可以在declaration做引用声明。
注意在使用了v.end()函数后,不能再往序列添加获删除元素了,否则end函数无效。
do—while循环注意不要在条件内定义变量。
break作用于最近的循环,switch。continue作用于最近的循环。
不要用goto,破环程序结构。
===========================================================================
异常处理:
throw表达式:异常检测部分使用该表达式表示它遇到了异常。
try语句块:异常处理部分使用try语句块处理异常。
异常类