반응형

C 135

빠른(낮은) 코드 쓰는 법?

빠른(낮은) 코드 쓰는 법? 현재 상태로는 이 질문은 우리의 Q&A 형식에 맞지 않습니다.사실, 참고 자료 또는 전문 지식에 의해 답변이 뒷받침되기를 기대하지만, 이 질문은 토론, 주장, 여론 조사 또는 토론을 요청할 가능성이 높습니다.만약 이 질문이 개선되고 다시 열릴 수 있다고 생각한다면,안내를 받기 위해 헬프 센터를 방문합니다. 닫힘11년 전에. 저는 낮은 수준의 코드 최적화와 기본적인 머신 아키텍처의 이점을 활용하는 방법에 대해 더 알고 싶습니다.이 주제에 대해 어디서 읽어야 할지 좋은 조언을 찾고 있습니다. 자세한 내용: 저는 C/C++와 같은 낮은 수준의 언어로 과학적 컴퓨팅(숫자 크런치가 많지만 이뿐만 아니라)의 맥락에서 최적화에 관심이 있습니다.저는 특히 기계가 어떻게 작동하는지에 대해 잘..

programing 2023.11.07

1비트 길이의 데이터 타입을 C로 생성할 수 있습니까?

1비트 길이의 데이터 타입을 C로 생성할 수 있습니까? 기본적으로 데이터 유형을 만들고자 합니다.uint1_t.그게 가능하긴 해? boole 데이터 타입의 크기는 1바이트로 알고 있습니다.그러나 부울 값에는 한 비트만 필요합니다.그래서 C는 기본적으로 bool에 한 비트만 사용합니까?만약 그렇다면 나머지 7개는 어떻게 되는 겁니까?한 비트가 충분한 곳에서 8비트를 사용하는 것은 공간 낭비로 보입니다.한 비트를 차지하는 유형을 만드는 것은 실제로 가능하지 않습니다.C에서 주소를 지정할 수 있는 가장 작은 단위는char(이것은 정의상 1바이트이며 일반적으로 반드시 8비트 길이일 필요는 없지만, 표준 C에서는 8비트보다 짧을 수 있습니다.) 다음을 통해 접근할 수 있습니다. typedef _Bool uint1..

programing 2023.11.07

scanf와 scanf_s의 차이

scanf와 scanf_s의 차이 사이의 차이점은 무엇입니까?scanf그리고.scanf_s? 저는 대학교에서 배우고 사용하고 있습니다.scanf, 하지만 제 개인 컴퓨터인 비주얼 스튜디오에서는 계속 경고를 보내고 있습니다. error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. 그리고 나는 모든 것을 바꿔야 합니다.scanf로.scanf_s프로그램이 구축되지 않을 겁니다(Visual Studio 2013을 사용하고 있습니다)이것은 특히 마이크로소프트 컴파일러에 속하는 기능입니다. scanf원래는 입력하는 콘솔 입력을 읽고 변수 유형에 할당합니다. 다음과 같은 배열이 있는 경우first_nam..

programing 2023.11.02

FALSE와 TRUE의 이상한 정의, 왜?

FALSE와 TRUE의 이상한 정의, 왜? 이 질문에는 이미 다음과 같은 답변이 있습니다. 단순히 1이 아닌 C 부울 매크로에서 #define TRUE(1==1)를 사용하는 이유는 무엇입니까? (8개 답변) 닫힘9년 전에. 제가 작업하고 있는 어떤 코드에서 저는 진실과 거짓에 대한 이상한 재정의를 발견했습니다.저는 수표를 좀 더 엄격하게 하기 위해 그런 것들을 본 적이 있지만, 제 마음에는 이 일이 좀 이상해서 누가 그런 정의를 내리는 데 적절한 이유가 무엇인지 말해줄 수 있는지 궁금합니다. 그 옆에 제 의견이 있는 아래를 참조하십시오. #define FALSE (1 != 1) // why not just define it as "false" or "0"? #define TRUE (!FALSE) // w..

programing 2023.11.02

왜 C 언어들은 if 문장에서 간단한 조건 주위에 부모를 필요로 합니까?

왜 C 언어들은 if 문장에서 간단한 조건 주위에 부모를 필요로 합니까? 바보같이 들리지만 몇 년 동안 저는 이를 필요로 하는 사용 사례를 생각해내지 못했습니다.빠른 구글 검색은 가치 있는 것을 아무것도 드러내지 않았습니다. 기억에서 Bjarne Stroustrup이 언급한 사용 사례가 있었지만, 그것에 대한 참고 자료를 찾을 수 없습니다. 그럼 왜 C 언어로 이것을 가질 수 없습니까? int val = 0; if val doSomehing(); else doSomehinglse(); 저는 "렉서에 지원을 추가하는 것을 귀찮아하지 않았다"는 이유를 받아들일 수 있습니다. 이 구문이 다른 언어 구성 요소를 파괴하는지 알고 싶습니다.C/C++에 얼마나 많은 특이한 구문 기능들이 있는지를 고려해 볼 때, 저는..

programing 2023.11.02

크기 8 - Valgrind + C의 잘못된 판독값

크기 8 - Valgrind + C의 잘못된 판독값 Valgrind가 오류를 보고합니다.Invalid read of size 8아래와 같은 암호로 제게 이런 배열이 있다고 선언했어요 struct symbol *st[PARSER_HASH_SIZE]; 내 프로그램이 초기화되면 이 배열의 모든 요소는 0으로 초기화됩니다. memset(&st[0], 0, sizeof(st)); 내 프로그램은 의 인스턴스를 만듭니다.struct symbol해쉬 값에 따라 상기 배열에 삽입합니다.따라서 이 배열의 요소 중 NULL이 되는 요소는 거의 없고 다른 요소는 유효한 값이 됩니다. 다음 코드는 할당된 항목을 삭제하려고 하고 라인에서 valgrind 불만 사항을 제기합니다.sym = st[i]; sym != NULL; sym..

programing 2023.10.23

zLib을 사용하여 감압 및 팽창

zLib을 사용하여 감압 및 팽창 gcc로 리눅스(Ubuntu 8.04)의 zpipe.c 예제를 컴파일하려고 하는데 몇 가지 오류가 발생합니다. [ubuntu@eeepc:~/Desktop] gcc zpipe.c /tmp/ccczEQxz.o: In function `def': zpipe.c:(.text+0x65): undefined reference to `deflateInit_' zpipe.c:(.text+0xd3): undefined reference to `deflateEnd' zpipe.c:(.text+0x150): undefined reference to `deflate' zpipe.c:(.text+0x1e8): undefined reference to `deflateEnd' zpipe.c:(.t..

programing 2023.10.23

0으로 구분: C 및/또는 C++에 정의되지 않은 행동 또는 구현?

0으로 구분: C 및/또는 C++에 정의되지 않은 행동 또는 구현? 0으로 나누는 것과 관련하여, 표준은 다음과 같이 말합니다. C99 6.5.5p5 - 연산자의 결과는 첫 번째 피연산자를 두 번째 피연산자로 나눈 몫이고, % 연산자의 결과는 나머지입니다.두 작업 모두에서 두 번째 피연산자의 값이 0이면 동작이 정의되지 않습니다. C++035.6.4 - 이진 / 연산자는 몫을 산출하고 이진 % 연산자는 첫 번째 식을 두 번째 식으로 나눈 나머지를 산출합니다./ 또는 %의 두 번째 피연산자가 0이면 동작이 정의되지 않습니다. 위의 단락들을 액면 그대로 받아들인다면, 답은 두 언어 모두에 대한 정의되지 않은 행동입니다.그러나 C99 표준에서 더 아래를 보면 모순되는 것으로 보이는 다음 단락을 볼 수 있습니다..

programing 2023.10.18

휴대용으로 min(INT_MAX, abs(INT_MIN)을 찾는 방법은?

휴대용으로 min(INT_MAX, abs(INT_MIN)을 찾는 방법은? 요를 알 수 ?INT_MAXINT_MIN입니다)? (입니다)INT_MIN, abs기능을 합니다. 은 같아야 합니다.INT_MAX대부분의 시스템에서 사용할 수 있습니다. 하지만 저는 좀 더 편리한 방법을 찾고 있습니다.일반적인 가치는 다음과 같습니다.INT_MIN는 -2147483648이고, 일반적인 값은INT_MAX 표준에 2147483647,다.이 TL입니다.DR: 검색 중인 값은INT_MAX일치하는 실시로하지만 계산은 min(INT_MAX, abs(INT_MIN))휴대용이 아닙니다. 한 값은 INT_MIN그리고.INT_MAX INT_MIN그리고.INT_MAX부속서 E(구현 한도) 1(C 표준, C++는 이를 상속함)에 의해 정의..

programing 2023.10.13
반응형