2009-02-02 3 views
3

나는 dataArray라고하는 부호없는 숫자의 배열을 가지고 있습니다. 실제로 프로그램에서 16 진수로 입력되지만, 중요하지는 않습니다. 나는 c라는 unsigned char 형 변수를 가지고있다.배열 이름이 전에 괄호 안에 캐럿 포인터가있는 것은 무엇을 의미합니까?

이것은 무엇입니까?

unsigned int dataArray[]={1,2,3,4,5}; 
unsigned char c; 
x=c^ (dataArray)[i]; 

나는 캐럿이 c에 대한 참조임을 읽었지만 배열 이름이 괄호 안에있을 때는 무엇을 의미합니까? x는 dataArray의 (i-1) 번째 요소로 설정되어있는 것 같습니다. 그러나 어떤 조건에서는 그렇지 않은 것입니까?

감사합니다.

+0

오류가 있습니까? 그 C XOR dataArray [i]. 당신은 c와 i에 대한 가치가 없습니다. – Perpetualcoder

+0

우연히 CRC 계산에서 나온 것입니까? –

답변

11

괄호는 여기 의미에 영향을주지 않습니다. x는 c (여기서는 정의되지 않음)와 dataArray [i]의 비트 단위 exclusive-or로 계산됩니다.

+0

그래서 x는 무엇입니까? – Malfist

+0

그것은 XOR dataArray [i]입니다. 그것보다 더 명확 할 수는 없습니다. –

+0

배열을 어떻게 XOR합니까? – Malfist

0

이것이 정말로 C++ 인 경우 '^'는 XOR 비트 연산자입니다. 괄호는 추가로 사용되며이 예제에서는 아무 것도 수행하지 않습니다.

1

여기에 사용 된 ^은 비트 XOR입니다 (wikipedia 참조). 연산자 []가 bitwise-xor보다 우선 순위가 높으므로 괄호는 여기에 아무 것도 없습니다.

0

^는 내가 아는 한 과부하되지 않습니다. 그것이 입력되고 적절하게 컴파일되면 XOR 연산을 시도 할 것입니다. 그러나이 경우에는 원하지 않는 데이터가 엉망이 될 것입니다 ...

0

Ok, cool. 그건 내가 사용하고있는 프로그램에서 의미가있다. 나는 캐럿이 포인터라고 생각했지만 XOR이었고 나중에 라인에 & (비트 AND)이 있습니다. 이 프로그램은 전자 장치로부터 신호를 보내고 받기위한 것으로, 비트 레벨 논리가 예상됩니다. 빠른 답장을 보내 주셔서 대단히 감사합니다.

+0

하나가 아닌 "대답"을 쓰는 대신 자신의 질문을 편집하거나 의견을 쓰는 것이 좋습니다. 나쁜 일은 없지만, 그 대답은 시간 순으로 드물게는 거의 볼 수 없다는 것을 명심하십시오. 그러나 그것들 모두는 실제로 대부분 자체적으로 머물러 있습니다. – gimpf

2

일부 파생 된 언어에서 캐럿은 관리되는 포인터를 선언하는 데 사용됩니다. 이것은 마이크로 소프트가 만든 C++/CLI 언어로 .NET에서 사용됩니다. 그것은 일반적인 C++에서 그 의미가 없습니다. 표현식에서, 캐럿은 이미 다른 사람들이 설명했듯이 비트 방식의 XOR을 의미합니다.

관련 문제