原来像4["Hello"]这样搞笑的表达式也是合法的
c语言吧
全部回复
仅看楼主
level 7
zotin 楼主
折行下面这段程序:
#include <stdio.h>
int main()
{
    printf("%c\n", 4["Hello"]);
    return 0;
}
程序会为你打印出一个漂亮的o
这是怎么来的,很简单。
在c语言里面a[b]在编译的时候,会被解释成*((a) + (b));
加法是可以交换的,所以4["Hello"]相当与"Hello"[4]。
虽然"Hello"[4]看起来也有些奇怪,但好歹能理解结果为什么是o了。
这个东西全无用处 —— 至少好像还没有发掘出它的用处 —— 除了可以向别人炫耀一下你对C语言有多“了解”。

2010年12月29日 03点12分 1
level 9
[啊!]
2010年12月29日 03点12分 2
level 8
这也算是未定义行为吧
2010年12月29日 03点12分 3
level 7
zotin 楼主
回复:3楼
不清楚这个是不是未定义行为。
2010年12月29日 07点12分 4
level 4
无语……
2010年12月29日 15点12分 5
1