2010年10月5日 星期二

別以為你不會碰到 (1)

很多時候,問題都是出在空格上面

result = *x / *y;  //no problem

result = *x/*y;  //compile error

查了好久都不知道為什麼,後來發現… y 被當成多行注解,抹掉了

result = (*x) / (*y); //for your safety

其實有時候不是在寫公司的 code 很懶得去注意 style,上述的方法基本上是沒在用,只能說永遠記得,C 是 maximal munch strategy,你不把運算符切開,它一次就咬住最大口來分析代碼。

經典問題:

a = x+++y;

答案為下列何者?
1.
a = x+       ++y;

2.
a = x++     +y;

思考一下 :)

1 則留言:

  1. 這個問題我的前輩們有提到
    當初找半天才知道原來是空格惹的禍
    甚至一連串參數的括號也是要注意.

    看了這問題所提到C是 maximal munch strategy.
    是因為C的運算符有分優先級
    所以當中的 a = x++ +y; // "++"優先於"+"
    應該是確答案!

    回覆刪除