Today I came across this blog. What attracted me the most is this:
int i;
i["]
Well, I don't really know what is the purpose of the weird "string constant" inside the array subscript, but I am confused how it is possible to subscript an integer variable. So I came with this code:
#include
int main(void) {
int x = 10;
printf("%d", x["\0"]); /* What is x["\0"]?! */
return 0;
}
It compiles without error using MinGW with -Wall -ansi -pedantic. This code then outputs: 105.
Can anyone interpret this?
Edit: I found that there must be a pointer inside the subscript, or else I get compile-time error.
Answer
It's a well-known trick. Because of the way pointer arithmetic works, the following are synonymous:
v[5]
5[v]
*(v + 5)
It's the same thing when v
happens to be a string literal.
No comments:
Post a Comment