반응형

C 135

설정된 최하위 비트 위치

설정된 최하위 비트 위치 정수로 설정된 최하위 비트의 위치를 효율적으로 결정할 방법을 찾고 있습니다. 예를 들어 0x0FF0의 경우 4가 됩니다. 간단한 구현은 다음과 같습니다. unsigned GetLowestBitPos(unsigned value) { assert(value != 0); // handled separately unsigned pos = 0; while (!(value & 1)) { value >>= 1; ++pos; } return pos; } 어떻게 사이클을 짜낼지 생각나는 거 없어? (주의: 이 질문은 그런 것을 즐기는 사람들을 위한 것이지, xyzzoptimization이 나쁘다고 말하는 사람들을 위한 것이 아닙니다. [편집] 아이디어 감사합니다!다른 것도 몇 가지 배웠어요그러자..

programing 2022.07.17

size of ( )를 사용하지 않고 이 코드를 사용하여 어레이 크기를 결정하는 방법

size of ( )를 사용하지 않고 이 코드를 사용하여 어레이 크기를 결정하는 방법 C인터뷰 질문을 몇 가지 해 본 결과, 「연산자 사이즈를 사용하지 않고 C에서 어레이 사이즈를 찾는 방법」이라고 하는 질문을 다음과 같은 해답으로 발견했습니다.작동하는데 왜 그런지 모르겠어요. #include int main() { int a[] = {100, 200, 300, 400, 500}; int size = 0; size = *(&a + 1) - a; printf("%d\n", size); return 0; } 역시 5가 반환됩니다. edit: 사람들이 이 대답을 지적했지만 구문이 조금 다릅니다. 즉, 색인화 방식입니다. size = (&arr)[1] - arr; 그래서 저는 두 질문 모두 타당하고 문제에 대한..

programing 2022.07.17

C에서 파일을 잘라내는 방법

C에서 파일을 잘라내는 방법 파일에 데이터를 쓸 때 C를 사용하고 있어요.지금 쓰고 있는 것보다 더 길 경우 파일에 적혀 있던 이전 텍스트를 지우고 싶습니다.파일 크기를 줄이거나 끝까지 잘라내고 싶습니다.이거 어떻게 해?파일의 이전 내용을 일정 길이(다른 응답에 의해 제공되는 0보다 큰 길이)까지 보존하는 경우 POSIX는 및 기능을 제공합니다. #include int ftruncate(int fildes, off_t length); int truncate(const char *path, off_t length); 이름은 파일 단축이라는 주요 목적을 나타냅니다.그러나 지정된 길이가 이전 길이보다 길면 파일이 새 크기로 커집니다(패딩 없음).주의:ftruncate()파일 디스크립터로 동작합니다.FILE *..

programing 2022.07.17

C/C++ 기본형은 원자형입니까?

C/C++ 기본형은 원자형입니까? C/C++는 다음과 같은 기본 유형입니까?int,double원자, 예를 들어 스레드세이프? 데이터 레이스에서 자유롭습니까?즉, 한 스레드는 이러한 유형의 오브젝트에 쓰고 다른 스레드는 그 오브젝트에서 읽는 경우 동작이 명확하게 정의되어 있습니까? 그렇지 않은 경우 컴파일러에 따라 달라집니까?원자란 무엇인가? 원자, 원자의 성질을 가지고 무언가를 묘사하는 것입니다.atom이라는 단어는 "분할되지 않은"을 뜻하는 라틴어 atomus에서 유래했다. 통상, 나는 (언어에 관계없이) 원자 조작을 2개의 자질을 가지는 것으로 생각한다. 원자 작전은 항상 분할되지 않는다. 즉, 분리할 수 없는 방식으로 수행되며, OP가 말하는 "스레드세이프"가 바로 이것이라고 생각합니다.어떤 의미에..

programing 2022.07.17

C가 있는 단말기에서 printf 출력에 이상한 퍼센트 부호가 표시됨

C가 있는 단말기에서 printf 출력에 이상한 퍼센트 부호가 표시됨 나는 이것을 가지고 있다.printf프로그램 종료 시 스테이트먼트: printf("%d", total_candies); total_candies는 입니다.int실제 수치와 함께 모든 것이 올바르게 작동하기를 기대하지만 마지막에 이상한 백분율 표시가 나타납니다. 누가 왜 이런 일이 일어나는지 말해 줄 수 있나요?프로그램의 (null이 아닌) 출력에 후행 줄바꿈이 포함되지 않은 경우 zsh는 색상 변환된 줄을 추가합니다.%프롬프트를 출력하기 전에 다음 행으로 이동합니다.일반적으로 bash 동작보다 출력이 종료된 곳에서 명령어프롬프트를 시작하는 것이 편리합니다.인zsh PROMPT_SP일부 행(즉, 줄 바꿈으로 끝나지 않은 행)을 유지하려고..

programing 2022.07.16

C에는 기능 프로그래밍을 위한 툴이 어떤 것이 있습니까?

C에는 기능 프로그래밍을 위한 툴이 어떤 것이 있습니까? C++가 아닌 C에서 기능 프로그래밍을 어떻게 해야 할지 요즘 많이 고민하고 있습니다.분명히 C는 절차 언어이며 기능 프로그래밍을 네이티브하게 지원하지 않습니다. 언어에 기능적인 프로그래밍 구조를 추가하는 컴파일러/언어 확장 기능이 있습니까?GCC는 언어 확장자로서 중첩된 함수를 제공합니다.네스트된 함수는 부모 스택프레임에서 변수에 액세스할 수 있지만 성숙한 폐쇄에는 아직 멀었습니다. 예를 들어, C에서 매우 유용할 것으로 생각되는 것은 함수 포인터가 예상되는 곳이라면 어디든 람다 식을 통과시켜 함수 포인터로 붕괴되는 폐쇄를 만들 수 있다는 것입니다.C++0x 에는 람다 표현(멋있다고 생각합니다)이 포함되어 있습니다만, 스트레이트 C에 적용할 수 ..

programing 2022.07.16

닫힘 소켓과 종료 소켓의 차이

닫힘 소켓과 종료 소켓의 차이 C에서는 소켓을 닫으면 소켓이 파괴되어 나중에 재사용할 수 있다는 것을 알았습니다. 운운운운 운운?설명에 따르면 이 소켓에 대한 듀플렉스 접속의 절반이 닫힙니다. 그 은 '소켓'처럼 요?close★★★★★★★★★★★★★★★★★★?의 어떤 도 사람들에게 해야 하는지 .shutdown ★★★★★★★★★★★★★★★★★」closeTCP 프로토콜 수준에서 동작하기 때문에 추가할 필요가 있습니다. 표준 TCP 접속은 4방향 최종화에 의해 종료됩니다. 참가자는 송신할 데이터가 없어지면 FIN 패킷을 다른 참가자에게 송신합니다. 상대방이 FIN의 ACK를 반환합니다. 상대편도 데이터 전송을 완료하면, 다른 FIN 패킷을 송신합니다. 첫 번째 참가자는 ACK를 반환하고 전송을 종료합니다. ..

programing 2022.07.16

포인터 '디레퍼런스'란 무슨 뜻입니까?

포인터 '디레퍼런스'란 무슨 뜻입니까? 설명과 함께 예를 들어주세요.기본 용어 검토 프로그래밍 어셈블리를 사용하지 않는 한 일반적으로는 숫자 메모리 주소를 포함하는 포인터를 예상하는 것으로 충분합니다. 1은 프로세스 메모리의 두 번째 바이트, 2는 세 번째 바이트, 3은 네 번째 바이트 등을 나타냅니다. 0과 첫 번째 바이트는 어떻게 되었습니까?음, 그것에 대해서는 나중에 이야기하겠습니다.아래의 null 포인터를 참조해 주세요. 포인터가 무엇을 저장하고 메모리와 주소가 어떻게 관련되어 있는지에 대한 보다 정확한 정의는 이 답변의 끝에 있는 "메모리 주소에 대한 자세한 내용과 알 필요가 없는 이유"를 참조하십시오. 포인터가 가리키는 메모리의 데이터/값(숫자 인덱스가 있는 주소의 내용)에 액세스하려면 포인터..

programing 2022.07.11

C 경고 함수 호출에 sentinel이 없습니다.

C 경고 함수 호출에 sentinel이 없습니다. 이건 경고야. Missing sentinel in function call 어떻게 제거할 수 있는지. Linux & gcc 컴파일러를 사용하고 있습니다.방금 같은 문제를 발견했어요.그 원인이 된 암호는... execl("/bin/bash", "/bin/bash", fname, '\0'); 하지만 그건... execl("/bin/bash", "/bin/bash", fname, (char *)0); 첫 번째 버전의 문제는 파라미터 목록이 늘포인터로 끝나는 것입니다.그러나 '\0'은 null 포인터가 아니라 null 문자입니다.따라서 값(0)이 올바르고 유형이 잘못된 것일 뿐입니다. (char *)0도 0이지만 늘 포인터(주소0을 가리키고 있음)인 char 포..

programing 2022.07.11

단일 인수(변환 지정자 없음)를 사용하는 printf가 권장되지 않는 이유는 무엇입니까?

단일 인수(변환 지정자 없음)를 사용하는 printf가 권장되지 않는 이유는 무엇입니까? 읽고 있는 있어요.printf단일 인수(변환 지정자 없음)는 권장되지 않습니다.할 것을 합니다. printf("Hello World!"); 와 함께 puts("Hello World!"); 또는 printf("%s", "Hello World!"); 그런지 요?printf("Hello World!");★★★★★★★★★★★★★★★★★?이 책에는 취약성이 포함되어 있다고 쓰여 있습니다.러한한 ?? ?? ?? ??? ??printf("Hello World!");IMHO를 사용하다 const char *str; ... printf(str); ifstr 때 ''가 들어 있는 문자열을 됩니다.%s specificators,되지 않..

programing 2022.07.10
반응형