C 언어에서 &는 무엇을 의미하나요?
C 언어에서 &는 "비트 AND" 또는 "주소 취득" 연산자로 사용될 수 있습니다. 비트 AND 연산자는 또한 이진 연산자이기도 합니다. 해당 기능은 관련된 두 숫자의 이진 AND를 수행하는 것입니다. 주소 연산자는 단항 연산자로, 연산 결과를 오른쪽 피연산자의 주소로 설정합니다.
비트 AND 연산자
는 해당 비트에 따라 이진수를 AND하여 새로운 이진수를 얻는 것입니다. 1과 0은 0이고, 1과 1은 0이고, 0은 0입니다.
분석은 다음과 같습니다.
는 바이너리의 각 비트의 합입니다.
예: 1010 0011& 0000 1111, 결과는 0000 0011입니다. 즉, 0으로 가는 것은 해당 숫자를 0으로 지우는 것과 같고, 1로 가는 것은 해당 비트를 유지하는 것과 같습니다.
주소 연산자
c 언어의 & 연산자의 경우 정의는 다음과 같습니다. (&p)는 p가 선언되었을 때 열린 주소를 반환하는 연산이지만 내 관찰에 따르면; 코드 중 & 연산자는 단순히 주소를 반환하는 함수가 아니라고 생각합니다.
예:
int a = 1; //假设a的地址是0x7dfe88 int *p = (int *)0x7dfe88; int num = 1; int *p1 = #
위는 포인터 p와 p1에 값을 할당하는 간단한 코드이고, 0x7dfe88은 간단한 16진수입니다. address 이지만 주소가 포인터로 변환되면 강제 전송(int *)을 추가해야 합니다. 전송이 강화되지 않으면 컴파일러는 경고(경고 C4047: "초기화": "int *의 간접 수준)를 발행합니다. " 및 "int"는 다름); 그러나 & 연산자를 사용하여 주소를 가져오는 경우 강제 변환 없이 컴파일할 수 있으며 이는 & 연산자가 결코 주소를 가져오는 것만큼 간단하지 않음을 보여줍니다. "=" 대입 연산자는 오른쪽부터입니다. 이는 "="의 오른쪽도 포인터임을 나타냅니다. 따라서 & 연산자는 num의 주소를 가져와 이를 기반으로 임시 포인터를 생성한다고 가정합니다. 숫자의 종류
가설을 바탕으로 다음 코드를 작성하여 확인합니다.
int num = 1; double *p1 = #
그 결과, 컴파일러는 "warning C4133: "Initialization": Type incompatibility from "int *" to "double *"" 오류를 보고했습니다. 그래서 내 가설에는 어느 정도 진실이 있습니다.
추천 튜토리얼: "C#"
위 내용은 C 언어에서 &는 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!