大学C语言考试易错知识点总结,c语言易错知识点( 二 )


接下来第二梯队主要是我们的单目运算符 。比如正负号、指针符号、取地址、自加自减之类 。它们通常是紧紧贴着它们作用的对象的(单目),那关系亲密地如同情侣 。虽然狗粮不好吃,但是不能因为嫉妒就拆散人家呀(谁说的,我就觉得可以),所以它们的优先级也是比较高的,属于第二梯队 。
第三梯队就是我们的四大金刚啦——加减乘除,哦不,我们不能忘了我们除法的好兄弟——取余 。所以它们五个就是我们的第三梯队,我们可以把它们叫做算术运算符 。这五大金刚可是从小学就开始陪伴我们了,自然在考虑完父子情、情侣情之后要考虑它们几个了 。
第四梯队是位运算的左移和右移运算符 。这两个家伙虽然名气没有上面五大金刚大,但是它们也是可以改变变量的值呢,也可以算得上小金刚了 。所以,第四梯队,当之无愧 。
第五梯队是关系运算符,也就是表示大于小于不等这类符号 。它们虽然也很早就开始陪伴我们,名气也不小,但是毕竟是比较运算的结果,自然要等前两个梯队运算完,才能比较,那就只好屈居它们后面啦 。
第六梯队是位运算的按位与、或、异或 。理论上它们也是改变数值的呀,为什么不在前面的梯队呢?我们可以看看它们的样子:&、|,正好是我们下面一个梯队的一半,二者的关系情同手足,成功固然美好,但是一份兄弟情,哪是成功可以换来的?它们自然愿意留在兄弟身旁,相依相助 。
第七梯队是逻辑运算符,加上唯一一个三目运算符——条件运算符 。它们连接的多半是关系运算符的结果,自然就得在关系运算符后面啦!
第八梯队可是一个大部队,赋值运算符 。它们当然得殿后啦,它们可是把前面的运算结果保存下来的必经之路 。它们就如同慈爱的父母,默默地收拾前面这些孩子算出来的各种数据,并把它们认真地保存下来 。我们的父母在我们小时候,不也是这样的吗?
咦?我们好像还漏一个,没错,逗号运算符 。存在感太低啦!就放在最后一个吧!(我想你们大部分人也很少用它) 。
这样我们的优先级就彻底理清楚啦!
总结一下:
分量、下标运算符、圆括号>单目运算符>算数运算符(五大金刚加两个小金刚)>关系运算符>位运算符(与或异或)>逻辑运算符(含条件运算符)>赋值运算符>逗号运算符
这个总结并不严谨,因为有些运算符并不是在一起的,所以要注意对我说的故事的理解,再结合表看看背背就OK了 。
下面再说一下结合方向 。
这个还是很好总结的,除了后缀自加自减的所有单目运算符、条件运算符、赋值运算符是右结合,其他的符号全是左结合 。
这个还是很好理解的,那些单目运算符通常写在作用对象的左边,自然是从右向左结合,赋值符号也是把右边的数值赋给左边,所以也是从右向左,条件运算符……这么特殊的一个,记一下就好了 。
这样我们就成功地解决了这张令人头疼的表 。怎么样?不困难吧?
? sizeof()的返回值问题
首先强调一下,这个不是函数,虽然它看起来很像 。
它运算得到的值是括号内的东西所占的内存大小,它是一个int型的值 。所以sizeof()的表达式是int型表达式 。
函数相关
? 函数声明问题
我们知道C语言里是需要函数声明的,如果函数放在主调函数的后面,就需要在主调函数前进行原型声明 。
但是不知道有没有像我一样,由于长期把函数放在主调函数的前面(少打几行字),而在考试时容易忘记声明这件事 。其实网上有不少信息学竞赛题的代码,它们绝大多数都是把函数放在主调函数前面,所以这里也算是一个提醒吧 。

推荐阅读