반응형

C 40

XOR의 합산을 위한 직접 공식

XOR의 합산을 위한 직접 공식 1부터 N까지의 XOR 번호를 입력해야 하는데, 직접 공식이 있나요? 예를 들어 만약N = 6그리고나서1^2^3^4^5^6 = 7루프를 사용하지 않고 진행하고 싶어서 O(1) 공식이 필요합니다(있을 경우)당신의 공식은N & (N % 2 ? 0 : ~0) | ( ((N & 2)>>1) ^ (N & 1) ): int main() { int S = 0; for (int N = 0; N >1) ^ (N & 1) ); std::cout 1)) & 1 N: N:rez = (N & ~1) | ((N ^ (N >> 1)) & 1)알렉세이 말리스토프의 훌륭한 답변!..

source 2023.09.13

무한 루프를 구현할 때 (1) 대 (;;) 대 (C)로 이동하는 동안 사용하는 것에 차이가 있습니까?

무한 루프를 구현할 때 (1) 대 (;;) 대 (C)로 이동하는 동안 사용하는 것에 차이가 있습니까? 무한 루프를 구현할 때 사용하는 방법에 차이가 있습니까?while(1)대for(;;)대goto? 고마워, 첸즈최적화 도구를 해제하더라도 동일한 값입니다. 예: #include extern void f(void) { while(1) { putchar(' '); } } extern void g(void) { for(;;){ putchar(' '); } } extern void h(void) { z: putchar(' '); goto z; } 컴파일 대상gcc -O0는 세 가지 기능 모두에 대해 동등한 어셈블리를 제공합니다. f: ; [ EXTERNAL ] ; +00000 00000fb4 80402DE9 st..

source 2023.09.03

(방법) 특정 함수 호출을 인라인으로 연결할 수 있습니까?

(방법) 특정 함수 호출을 인라인으로 연결할 수 있습니까? 프로그램의 여러 부분에서 호출되는 기능이 있다고 가정해 보겠습니다.또한 성능에 매우 민감한 코드 섹션(예: 수천만 번 반복되는 루프 및 각 마이크로초가 중요한 루프)에 있는 해당 기능에 대한 특별한 호출이 있다고 가정해 보겠습니다.로 사용할 수 ?gcc나의 경우) 다른 것들을 줄이지 않고 특정한 단일 함수 호출을 줄입니까? 편집: 이 질문은 gcc(또는 다른 컴파일러)가 함수에 대한 모든 호출을 인라인화하도록 강제하는 것이 아니라 컴파일러가 함수에 대한 특정 호출을 인라인화하도록 요청하는 것에 관한 것입니다.C에서는 (C++와 반대로) 함수에 인라인을 적용해야 한다고 제안하는 표준 방법이 없습니다.공급업체별 확장만 가능합니다. 내가 알기로는 컴파..

source 2023.08.24

기존 스레드 풀 C 구현

기존 스레드 풀 C 구현 닫힘.이 질문은 책, 도구, 소프트웨어 라이브러리 등에 대한 권장 사항을 찾는 것입니다.충족되지 않습니다.스택 오버플로 지침입니다.현재 답변을 수락하고 있지 않습니다. 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 질문은 허용되지 않습니다.질문에 사실과 인용문으로 답변할 수 있도록 질문을 편집할 수 있습니다. 8년 전에 문을 닫았습니다. 이 질문을 개선합니다. pthreads 스레드 풀에 대해 C에서 어떤 오픈 소스 구현을 추천하시겠습니까? 이 구현이 다음과 같은 경우 추가 사항: 경량: glib, APR, NSPR 및 기타 제품에는 큰 바이인이 포함되어 있습니다. 파일 2개(헤더 및 구현)만 있으면 좋겠습니다. 여러 플랫폼(Linux, BSD, Mac OS X 등)..

source 2023.08.19

쉼표 연산자에서 'return', 'continue' 또는 'break'이 작동하지 않는 이유는 무엇입니까?

쉼표 연산자에서 'return', 'continue' 또는 'break'이 작동하지 않는 이유는 무엇입니까? 나는 코드를 쓸 수 있습니다.if(1) x++, y++;대신에if(1) {x++; y++;}그러나 일부 경우에는 작동하지 않습니다(아래 참조).이것에 대해 말씀해 주시면 감사하겠습니다. int x = 5, y = 10; if (x == 5) x++, y++; // It works if (x == 5) x++, return 0; // It shows an error 동일하게 적용됩니다.for루프: for (int i = 0; i < 1; i++) y++, y += 5; // It works for (int i = 0; i < 1; i++) y++, break; // Does not work 그것은r..

source 2023.07.30

C - 문자열을 문자열 배열로 분할

C - 문자열을 문자열 배열로 분할 C:에서 이 작업을 수행하는 방법을 완전히 확신할 수 없습니다. char* curToken = strtok(string, ";"); //curToken = "ls -l" we will say //I need a array of strings containing "ls", "-l", and NULL for execvp() 제가 이걸 어떻게 해야 할까요?당신이 이미 조사를 했으니strtok동일한 경로를 따라 계속 진행하고 공백을 사용하여 문자열을 분할합니다.' ') 구분 기호로 사용한 다음 을 다음과 같이 사용합니다.realloc전달할 요소를 포함하는 배열의 크기를 늘립니다.execvp. 다음 예를 참조하십시오. 그러나 다음과 같은 점에 유의하십시오.strtok전달된 문자..

source 2023.07.30

C/C++ int 또는 unsigned int 사용

C/C++ int 또는 unsigned int 사용 많은 코드 예제에서 소스 코드, 라이브러리 등.때 하는 것을 , 내를볼수있, 나는가 int는것을봅.unsigned int훨씬 더 말이 될 것 같습니다. 한 은 제가자보는한곳에 있습니다.for루프. 아래 예를 참조하십시오. for(int i = 0; i < length; i++) { // Do Stuff } 도대체 왜 당신은 그것을 사용합니까?int금도보다 .unsigned int그것은 요? - 은 타이핑하는 것에 쓸가 없나요? 사람들은 타이핑하는 것에 신경 쓸 수 없습니다.unsigned?용사를 합니다.unsigned발견하기 어려운 프로그래밍 오류를 발생시킬 수 있으며, 보통 서명된 것을 사용하는 것이 더 좋습니다.int단지 그들을 피하기 위해서. 가지..

source 2023.07.25

C++에서는 여러 개의 사전 증분이 허용되지만 C에서는 허용되지 않는 이유는 무엇입니까?

C++에서는 여러 개의 사전 증분이 허용되지만 C에서는 허용되지 않는 이유는 무엇입니까? 이 질문에는 이미 다음과 같은 답이 있습니다. C++에서는 다중 증분/감소가 유효하지만 C에서는 유효하지 않은 이유는 무엇입니까? (4개 답변) 마감됨5년 전에. 이유는 int main() { int i = 0; ++++i; } 유효한 C++이지만 유효하지 않은 C?C와 C++는 접두사 ++의 결과에 대해 서로 다른 말을 합니다.C++에서: [expr.pre.incr] 접두사 ++의 피연산자는 1을 추가하여 수정됩니다.피연산자는 수정 가능한 l 값이어야 합니다.피연산자의 유형은 cvbool 이외의 산술 유형이거나 완전히 정의된 객체 유형에 대한 포인터여야 합니다.결과는 업데이트된 피연산자이며, 이 값은 l 값이며 피..

source 2023.07.10

참조 해제 유형이 실행된 포인터는 엄격한 별칭 규칙을 위반합니다.

참조 해제 유형이 실행된 포인터는 엄격한 별칭 규칙을 위반합니다. 다음 코드를 사용하여 더 큰 프로그램의 일부로 파일에서 데이터를 읽었습니다. double data_read(FILE *stream,int code) { char data[8]; switch(code) { case 0x08: return (unsigned char)fgetc(stream); case 0x09: return (signed char)fgetc(stream); case 0x0b: data[1] = fgetc(stream); data[0] = fgetc(stream); return *(short*)data; case 0x0c: for(int i=3;i>=0;i--) data[i] = fgetc(stream); return *(int..

source 2023.07.05
반응형