반응형

c 78

C의 int 변수에 이중 정밀도를 할당하는 비직관적 결과

C의 int 변수에 이중 정밀도를 할당하는 비직관적 결과 다음 코드에서 출력된 14번과 15번 두 개의 번호를 왜 구하는지 누가 설명 좀 해줄래? #include int main() { double Vmax = 2.9; double Vmin = 1.4; double step = 0.1; double a =(Vmax-Vmin)/step; int b = (Vmax-Vmin)/step; int c = a; printf("%d %d",b,c); // 14 15, why? return 0; } 나는 두 경우 모두 15점을 받을 것으로 예상하지만 언어의 기초가 부족한 것 같다. 그게 관련이 있는지는 모르겠지만 코드블록에서 테스트를 하고 있었어.그러나 일부 온라인 컴파일러(예: 이 코드)에 동일한 코드 라인을 입력하..

Programing 2022.04.17

무료()가 내 어레이의 길이를 알고 있다면 왜 내 코드로 요청할 수 없는가?

무료()가 내 어레이의 길이를 알고 있다면 왜 내 코드로 요청할 수 없는가? 동적으로 할당된 어레이의 길이를 해당 어레이를 조작하는 기능에 전달하는 것이 일반적인 관례라는 것을 알고 있다. void initializeAndFree(int* anArray, size_t length); int main(){ size_t arrayLength = 0; scanf("%d", &arrayLength); int* myArray = (int*)malloc(sizeof(int)*arrayLength); initializeAndFree(myArray, arrayLength); } void initializeAndFree(int* anArray, size_t length){ int i = 0; for (i = 0; i <..

Programing 2022.04.17

유닉스 도메인 소켓 VS 명명된 파이프?

유닉스 도메인 소켓 VS 명명된 파이프? 소켓이라는 유닉스를 보고 파이프라는 이름이 붙은 줄 알았다.나는 이름 파이프를 보았지만 별 차이가 없었다.나는 그것들이 다르게 초기화된 것을 보았지만 그것만이 눈에 띈다.둘 다 C 쓰기/읽기 기능을 사용하며 AFAIK와 동일하게 작동한다. 유닉스 도메인 소켓과 명명된 파이프의 차이점은 무엇인가?내가 언제 다른 하나를 고를까?기본적으로 어느 것을 사용해야 하는가(예: Deque, list 또는 필요한 경우 다른 것을 사용하는 것보다 C++에서 벡터를 기본적으로 사용하는 방법)?UNIX 도메인 소켓은 일반적으로 명명된 파이프보다 더 유연하다.이들의 장점 중 일부는 다음과 같다. 통신하는 세 개 이상의 프로세스(예: 여러 클라이언트 프로세스를 연결할 수 있는 서버 프로..

Programing 2022.04.17

"#define _GNU_SOURCE"는 무엇을 의미하나?

"#define _GNU_SOURCE"는 무엇을 의미하나? 오늘 나는 그 제품을 사용해야 했다.basename()기능, 그리고man 3 basename(여기) 내게 이상한 메시지를 주었다. 메모들 기본 이름()에는 위에서 설명한 POSIX 버전과 GNU 버전 등 두 가지 버전이 있다. #define _GNU_SOURCE #include 이게 뭔지 궁금하다.#define _GNU_SOURCE즉, GNU 관련 라이선스로 작성한 코드를 표시하지 않는가?아니면 단순히 컴파일러에게 "글쎄, 나도 알아, 이 기능 세트는 POSIX가 아니니까 휴대용은 아니지만, 어쨌든 사용하고 싶어."와 같은 것을 말하는 데 사용되는가? 만약 그렇다면, 한 기능 구현이나 다른 기능 구현을 위해 모호한 매크로를 정의해야 하는 대신에 ..

Programing 2022.04.17

C와 C++의 맥락에서 활성화 기록은 무엇인가?

C와 C++의 맥락에서 활성화 기록은 무엇인가? C/C++ 프로그래머에게 그것은 무엇을 의미하며 그것에 대해 아는 것이 얼마나 중요한가? 적어도 개념적으로는 플랫폼 전반에 걸쳐 동일한가? 함수에 의해 로컬 변수를 저장하는 데 사용되는 할당된 메모리 블록으로 이해한다... 나는 더 알고 싶다활성화 레코드는 스택 프레임의 다른 이름이다.콜 스택을 구성하는 것은 데이터 구조 입니다.일반적으로 다음과 같이 구성된다. 지역 주민들 발신자에게 주소 반환 칼리어의 매개변수 이전 스택 포인터(SP) 값 따라서 콜 스택은 새로운 서브루틴이 추가될 때 스택에 추가되고, 반환될 때 스택에서 제거되는 모든 활성화 레코드로 구성된다. 요소의 실제 구조와 순서는 플랫폼이며 심지어 구현이 정의된다. C/C++ 프로그래머의 경우, ..

Programing 2022.04.17

C에서 stderr로 인쇄하려면 어떻게 해야 하는가?

C에서 stderr로 인쇄하려면 어떻게 해야 하는가? C에서는 stdout으로 인쇄하는 것이 쉬우며,printf로부터stdio.h. 그러나, 어떻게 더 stderr에 인쇄할 수 있을까?우리는 사용할 수 있다.fprintf분명히 그것을 성취하기 위해서, 그러나 그것의 구문은 이상하게 보인다.아마도 우리는 사용할 수 있을 것이다.printf인쇄할 수 있는 거야?구문은 와 거의 같다.printf.와 함께printf문자열 형식과 해당 내용을 다음과 같이 지정하십시오. printf("my %s has %d chars\n", "string format", 30); 와 함께fprintf인쇄할 위치를 지정하는 경우를 제외하고는 동일하다. FILE *myFile; ... fprintf( myFile, "my %s has..

Programing 2022.04.16

표준 라이브러리를 사용하여 정렬된 메모리만 할당하는 방법

표준 라이브러리를 사용하여 정렬된 메모리만 할당하는 방법 나는 방금 취업 면접의 일환으로 시험을 끝냈는데, 한 문제가 나를 난처하게 만들었어. 심지어 참고용으로 구글을 사용했거든.StackOverflow 승무원이 이를 통해 무엇을 할 수 있는지 보고 싶다. 그memset_16aligned함수에 16바이트 정렬 포인터가 전달되지 않으면 충돌한다. a) 1024바이트의 메모리를 어떻게 할당하여 16바이트의 경계로 정렬하시겠습니까? b) 다음 시간 이후에 메모리를 확보하십시오.memset_16aligned처형당했어 { void *mem; void *ptr; // answer a) here memset_16aligned(ptr, 0, 1024); // answer b) here } 오리지널 해답 { void *..

Programing 2022.04.14

문자 배열 선언에서 문자열 리터럴 주위에 있는 브레이스가 유효한가?(예: char s[] = {"Hello World"})

문자 배열 선언에서 문자열 리터럴 주위에 있는 브레이스가 유효한가?(예: char s[] = {"Hello World"}) 나는 우연히나 라는 가 그 라는 것을 되었다.char s[] = {"Hello World"};적절히 정리되어 있고, 같은 대우를 받는 것 같다.char s[] = "Hello World";. 처음이 아닌가 (?{"Hello World"}) 문자의 배열인 하나의 요소를 포함하는 배열로, s에 대한 선언은 읽어야 한다.char *s[]? 사실 내가 로 바꾸면char *s[] = {"Hello World"};컴파일러도 역시 그것을 받아들인다. 답을 찾아보니 여기밖에 없는데 기준을 언급하는 곳이 없다. 그래서 제 질문은 왜 라인이char s[] = {"Hello World"};이 왼쪽이이 ..

Programing 2022.04.14
반응형