반응형

C 26

정수 배열에서 고유 난수 생성

정수 배열에서 고유 난수 생성 이 질문에는 이미 다음과 같은 답변이 있습니다. 닫힘11년 전에. 중복 가능: O(1)의 고유 난수? C에서 고유 값(중복되지 않음)으로 정수 배열을 채우려면 어떻게 해야 합니까? int vektor[10]; for (i = 0; i < 10; i++) { vektor[i] = rand() % 100 + 1; } //No uniqueness here 여러분의 문제를 해결하는 몇 가지 방법이 있는데, 각각의 장점과 단점이 있습니다. 먼저, 이미 다음을 수행하는 응답이 꽤 있다는 점에 주목하고 싶습니다. 이 응답은 무작위 번호를 생성한 다음 배열에서 이미 사용되었는지 여부를 확인하고, 이미 사용된 경우에는 사용되지 않은 번호를 찾을 때까지 다른 번호를 생성합니다.이것은 순진하고..

programing 2023.10.29

a=a++의 의미론을 정의하지 못하게 하는 이유는 무엇입니까?

a=a++의 의미론을 정의하지 못하게 하는 이유는 무엇입니까? 선을 a = a++; 는 C에서 정의되지 않은 동작입니다.제가 묻고 싶은 질문은 왜? 입니다. 제 말은, 어떤 일을 해야 하는지 일관성 있는 순서를 제공하는 것이 어려울 수도 있다는 것을 알고 있습니다.그러나 특정 컴파일러는 항상 (특정 최적화 수준에서) 한 순서 또는 다른 순서로 수행합니다.그렇다면 왜 이것이 정확히 컴파일러의 결정에 달려있는 것일까요? 확실히 말씀드리자면, 저는 이것이 디자인 결정이었는지, 그리고 만약 그렇다면 무엇이 그것을 촉발시켰는지 알고 싶습니다.아니면 하드웨어적인 제약이 있는 것은 아닐까요?업데이트: 이 질문은 2012년 6월 18일 제 블로그의 주제였습니다.좋은 질문 감사합니다! 왜죠? 저는 이것이 디자인 결정이었..

programing 2023.10.29

AF_의 차이점은 무엇입니까?INET 및 PF_INET 상수?

AF_의 차이점은 무엇입니까?INET 및 PF_INET 상수? 소켓 프로그래밍에 대한 예를 살펴보면 일부 사람들이AF_INET남들이 사용하는 동안에PF_INET. 또한 두 예제 모두 동일한 예제에서 사용되는 경우도 있습니다.문제는 그들 사이에 차이점이 있습니까?어떤 걸로 할까요? 만약 당신이 대답할 수 있다면, 또 다른 질문은...왜 이 두 개의 유사한 상수가 있습니까? 지금까지 발견한 것은: 그socket맨페이지 (Unix) 소켓 프로그래밍에서는socket()function 은 다음 파라미터를 수신합니다. int socket(int domain, int type, int protocol); 맨페이지에는 다음과 같이 적혀있습니다. 그domain인수는 통신 도메인을 지정합니다. 이것은 통신에 사용될 프로토..

programing 2023.10.29

C의 함수 포인터 - 성질 및 용도

C의 함수 포인터 - 성질 및 용도 방금 여기서 두 가지 더 궁금해지는 흥미로운 질문을 읽었습니다. 개념에 의해 함수의 고유성이 서로 다른 이름으로 보장되는 것을 감안할 때, 함수 포인터를 비교해야 하는 이유는 무엇입니까? 컴파일러는 함수 포인터를 특수 포인터로 보십니까?제 말은 그들이 마치, 예를 들어, 그들이, 예를 들어,void *아니면 더 풍부한 정보(반환 유형, 인수 수 및 인수 유형 등)를 보유하고 있습니까? 함수 포인터를 비교해야 하는 이유는 무엇입니까?다음은 한 가지 예입니다. #include /* * Register a function to be executed on event. A function may only be registered once. * Input: * arg - func..

programing 2023.10.24

C에서 변수 이름 뒤에 콜론

C에서 변수 이름 뒤에 콜론 이 질문에는 이미 다음과 같은 답변이 있습니다. 닫힘12년 전에. 중복 가능: :1, :7, :16 또는 :32와 같은 구조 선언의 콜론은 무엇을 의미합니까? 참고페이지의 C코드 샘플입니다. signed int _exponent:8; '8'과 '8' 이전의 결장 자체의 의미는 무엇입니까?좀 야합니다.A에서만 유효합니다.struct정의, 그리고 그것은 시스템이 당신의 정수에 단지 8비트만을 사용한다는 것을 의미합니다.이것은 비트필드, 모호하고 잘못된 구조물의 특징입니다.이 정도면 다른 사람의 코드에서 비트 필드를 처리하기 위해 알아야 할 정보를 검색할 수 있습니다.자신의 코드에 관해서는 절대 비트 필드를 사용하지 마십시오. 편집: 잭의 요청에 따라 비트 필드는 자신의 비트 산술..

programing 2023.10.24

C 및 Linux에서 소켓에 사용 가능한 데이터 양을 확인하는 방법

C 및 Linux에서 소켓에 사용 가능한 데이터 양을 확인하는 방법 저는 연속적인 데이터 스트림을 수신하는 서버를 가지고 있습니다.소켓에서 여러 번 읽는 것이 아니라, 한 번의 시스템 호출로 소켓 수신 버퍼의 전체 데이터를 읽고 싶습니다.read(). 물론 나는 큰 버퍼를 통과할 수 있고 그리고read()사용 가능한 모든 데이터로 채우려고 할 것입니다.그러나 이는 대부분의 경우 몰로크 버퍼가 소켓에서 사용 가능한 실제 데이터보다 크기 때문에 많은 메모리를 낭비하게 됩니다.소켓에서 사용 가능한 데이터를 조회할 수 있는 방법이 있습니까?예: #include ... int count; ioctl(fd, FIONREAD, &count); 아뇨, 없습니다.이를 위한 방법이 있다 하더라도 새로운 데이터가 언제든지 ..

programing 2023.10.14

함수와 같은 매크로에 전처리기 지시어를 추가하는 것이 잘못된 것입니까?

함수와 같은 매크로에 전처리기 지시어를 추가하는 것이 잘못된 것입니까? 제 질문이 이 질문이나 이 질문과 비슷하다는 것을 알고 있지만 실제로는 동일하지 않으며 두 번째 질문에는 응답이 허용되지 않았습니다. 함수와 같은 매크로를 호출할 때 전처리기 지시어를 추가하는 것이 올바른지 묻기로 결정했습니다. 제 경우에는 기능과 유사한 매크로가 있습니다. #define FUNC_MACRO(a, b) // do something with the variables 코드 어딘가에서 다른 매크로가 정의되어 있다면 특정한 차이를 가지고 부를 수 있습니다. // ... FUNC_MACRO(aVal #ifdef ANOTHER_MACRO + offset #endif // ANOTHER_MACRO , bVal); // ... 제 ..

programing 2023.10.14

fclose return value check

fclose return value check fclose의 리턴 값을 확인해야 합니까?파일을 성공적으로 연 경우 닫히지 않을 가능성은 얼마나 됩니까?이 할 때.fwrite파일에 실제로는 아무것도 쓰지 않을 수도 있고 버퍼(FILE 개체 내부)에 남아 있을 수 있습니다. 중인gfflush실제로 디스크에 쓸 수도 있습니다.예를 들어 디스크 공간이 부족하거나 다른 I/O 오류가 있는 경우 이 작업이 실패할 수 있습니다. fclose버퍼도 암시적으로 플러시하므로 동일한 이유로 실패할 수 있습니다.comp.lang.c: fclose() 호출은 실패할 수 있으므로 다른 모든 파일 작업과 마찬가지로 오류를 검사해야 합니다.현학적으로 들리죠?틀렸어.전생에 우리 회사 제품은 파일을 닫을 때 장애 확인을 생략하여 고객의..

programing 2023.10.14

CUDA의 __공유_메모리는 언제 유용합니까?

CUDA의 __공유_메모리는 언제 유용합니까? 공유 메모리 사용법에 대한 아주 간단한 예를 들어줄 수 있는 사람이 있습니까?Cuda C programming guide에 포함된 예제는 관련 없는 세부사항들로 인해 어수선해 보입니다. 예를 들어 큰 배열을 장치 전역 메모리에 복사하고 각 요소를 제곱하려면 공유 메모리를 어떻게 사용하여 속도를 높일 수 있습니까?아니면 이 경우에 유용하지 않습니까?언급한 특정한 경우 공유 메모리는 다음과 같은 이유로 유용하지 않습니다. 각 데이터 요소는 한 번만 사용됩니다.공유 메모리가 유용하려면 좋은 액세스 패턴을 사용하여 공유 메모리에 전송된 데이터를 여러 번 사용해야 도움이 됩니다.그 이유는 간단합니다. 글로벌 메모리에서 읽기만 해도 글로벌 메모리 읽기 1개와 공유 메모..

programing 2023.10.14

선언문에서 조합을 초기화할 수 있습니까?

선언문에서 조합을 초기화할 수 있습니까? 예를 들어, 우리에게 연합이 있다고 가정해 보겠습니다. typedef union { unsigned long U32; float f; }U_U32_F; 이 조합형의 변수가 선언되면 초기값을 설정할 수 있는 방법이 있습니까? U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this? 이니셜라이저 목록 사용: U_U32_F u = { 0xffffffff }; 첫번째 멤버가 아닌 다른 멤버를 설정할 수 있습니다. U_U32_F u = { .f = 42.0 }; 구성원별 조합 초기화는 C99 이전 컴파일러에서는 작동하지 않습니다. 이 컴파일러 중 우울한 숫자가 있습니다.예를 들어 현재의 마..

programing 2023.10.04
반응형