2017-04-18 46 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,那取决于程序的其余部分,这是我们看不到的。