在不同的编译器下,有些表达式得到的结果是不敬相同的,比如下面的表达式:a = 1 , b = 1;(a * b + ++b);在vc中得到是3, 而在bc中得到的却是1×2+2 = 4。从这个例子可以看出来,运算符之间的优先级是没有特别必要去区分的,像这样的题目要得到不同的运算方式可以采用讲语句分成两个语句,实现起来没什么不爽的。
就如在这样的一个表达式中,++a*(a + b).一般我们会认为括号的运算级别最高,但是错了,先是++a.然后再进入括号运算。呜呼!累,没必要啊,可是有些题目就是这样,悲哉!
博客指出不同编译器下,部分表达式运算结果不同,如表达式(a * b + ++b)在vc中结果为3,在bc中为4。还提到运算符优先级并非必须严格区分,可将语句拆分实现。如++a*(a + b),并非括号运算优先。
365

被折叠的 条评论
为什么被折叠?



