2017-04-18 39 views
-1

我碰到這個代碼來我不知道它在做什麼C++字面後面的支架

// ptr is a pointer to an int 
if (2[ptr] == 5){ 
    // do something 
} 

我做了一些我的測試,但無論我傳遞到PTR什麼樣的價值,0,底片,正片,2[ptr]總是評估爲0.我很驚訝它實際編譯。有人能解釋這個表達是什麼嗎?

+0

你在哪裏「碰到」這個代碼?誰寫的?你爲什麼不問他們做了什麼,爲什麼? –

+0

使用該語法編寫代碼的人不應該被允許將代碼傳遞給代碼庫:) – CoryKramer

+0

'2 [ptr]'被評估爲'*(ptr + 2)' – Arash

回答

2

2[ptr]ptr[2](或多或少)相同。有人對你開玩笑。至於爲什麼它總是評估爲0,那取決於程序的其餘部分,這是我們看不到的。