a[1]==1[a] ???

Fluence의 이미지

이 주제를 어디 올려야할지 몰라서 이렇게 여기 자유게시판에 올립니다.

얼마전에 아는 후배가 a[1] == 1[a]라고 말하더군요.

이걸 보자마자 "안돼!"라고 머리가 외쳤지만 왠지 될 것 같은.

결과는 됩니다. 여러분들도 알고 계셨나요? 아님 저만 몰랐나요 ㅡㅡ++

궁금해서 ^^*

vacancy의 이미지

x[y] <=> *(x + y)

equivalent 합니다.

ixevexi의 이미지

불현듯 지금 즈음이 전웅님 책이 나올 시기라는 생각이 드네요

어째 1월 중순에 원고가 넘어갈 예정이라는 말이었는데 :evil:
에효 빨리 책 사야하는데 ㅠ.ㅜ

C++, 그리고 C++....
죽어도 C++

Risty의 이미지

흠... a[b] == b[a]란건 예전부터 알고 있었지만 변수명 대신 숫자를 써도 되는지는 몰랐군요.

embster의 이미지

예전에 scjp 덤프 문제 쌓아놓구 봤을때 저런 문제로 상당히 많이 해깔렸다는 :oops:

젊음의 도전은 때로는 무모해야한다.

jin6093의 이미지

다시 체계적으로 배우는 c언어 포인터 / 정보문화사 / 정재은 저
======================================
p98에서 보면...

c언어에서의 []는 연산자이다. 두 개의 피 연산자를 가지며 하나의 피 연산자자는 기본 위치를, 다른 피 연산자는 기본 위치에서 얼마만큼 떨어져 있는지를 나타내는 것이다. .... 그러므로 순서가 상관없게 된다.

저도 처음에 내용을 보고 조금 놀랐습니다. 재밌더군요.

eminency의 이미지

예전에 같은 내용으로 글을 올린 적이 있었는데...^^

C에서는 연산자이기 때문에 가능합니다. 자바나 C-like한 다른 문법의 언어는 대부분 문법적으로 []앞에 배열명이 오도록 파싱 트리가 구성되어서 안되는 걸로 알지만요.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

lsj0713의 이미지

이것과 관련된 제일 재미있었던 수식은 다음과 같습니다.

3["abcdefg"] == 'd'

lifthrasiir의 이미지

obfuscated code 만들 때 많이 씁니다. 예를 들어서 (a+b)

를 c[a+b]로 만들어서 2바이트를 절약한다던지... :) 물론 C에서만 되고 (C++는 error인지 warning인 지 기억이 안 나네요.) java나 c 비스무리한 언어들에서는 될 리가 없습니다. 이 feature는 특수한 경우라도 쓸 일이 없을 것 같군요.
 
- 토끼군