VS Code에서 C 파일을 작성할 때 파일 이름을 first.c.cpp로 지정했습니다. 프로그램을 완료한 후 실행 중에 오류가 발생했습니다. 30분 동안 문제를 해결한 후 다음 파일 이름에 문제가 있음을 발견했습니다.
.c 확장자로 인해 IDE가 이를 C 프로그램으로 잘못 식별하게 되었고, 이로 인해 VS Code는 g(C 컴파일러) 대신 gcc(C 컴파일러)를 사용하여 코드를 컴파일하게 되었습니다.
캡션: 정말 바보같네요!
Java의 디자인 철학은 기존의 컴파일 언어와 크게 다릅니다.
이 디자인은 "한 번 작성하면 어디서나 실행"이라는 목표를 달성하는 반면, C 실행 파일(.exe 파일)은 단일 플랫폼에서 실행되도록 제한됩니다.
장점:수정 없이 동일한 프로그램을 다른 컴퓨터에서 실행할 수 있습니다.
단점:프로세스의 추가 단계로 인해 기존 방법에 비해 컴파일 속도가 약간 느려질 수 있습니다.
한 번 작성하면 어디서나 실행 가능
---------James Gosling
Little Endian: 최하위 바이트가 가장 낮은 주소에 저장됩니다. 이 저장 방법은 낮은 주소에서 높은 주소로 발생하는 CPU 메모리 읽기를 용이하게 하기 위해 등장했습니다. 흥미롭게도 이는 인간이 일반적으로 숫자를 쓰는 것과 반대입니다.
예를 들어:
329933의 이진 표현은 00000000 00000101 00001000 11001101
입니다.
리틀 엔디안 스토리지: 11001101 00001000 00000101 00000000
보시다시피 Little Endian은 이진 표현에서 바이트 순서를 반대로 바꿉니다. 그러나 각 바이트 내의 비트 순서는 변경되지 않는다는 점에 유의하는 것이 중요합니다!
타입 캐스팅을 소개하면서 제가 가장 좋아하는 실험입니다!
# includeint main() { int a; int *p; a=329933; p=&a; char *q; q=(char*)p; printf("%d\n",*p); printf("%d\n",*q); }
산출:
329933 -51
왜 -51이 출력되는지 궁금합니다.
우연의 일치인가요? 두 가지 예를 더 시도해 보겠습니다.
printf("%d\n",*(q 1)); printf("%d\n",*(q 2));
해 보세요:
강제 유형 캐스팅을 수행할 때 (char)p는 4바이트 int의 첫 번째 바이트 주소인 11001101을 가리킵니다.
가장 왼쪽의 1은 음수 기호를 나타내며 음수임을 나타냅니다. 2의 보수를 적용하면 다음과 같은 결과가 나옵니다: 0110011(마지막 7비트)
(참고: 양수의 경우 2의 보수는 단순히 십진수를 이진수로 표현한 것입니다. 음수의 경우 2의 보수는 가장 왼쪽(가장 높은) 비트를 제외한 모든 비트를 반전시킨 다음 1을 더하여 얻습니다. 가장 오른쪽 비트로 이동합니다.)
이를 십진수로 변환하면 -51이 됩니다. 흥미롭죠?
많은 사람들이 왜 -128인지 궁금해합니다. 답을 알고 있다면 댓글 섹션에서 자유롭게 공유해 주세요. 이는 다른 사람에게도 도움이 될 뿐만 아니라 자신의 생각을 정리하는 데도 도움이 됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3