반응형

C 33

C에서 : 연산자의 사용

C에서 : 연산자의 사용 이 질문에는 이미 다음과 같은 답변이 있습니다. 닫힘13년 전에. 가능한 중복: struct 필드 뒤의 ': number'는 무엇을 의미합니까? 'unsigned temp:3'은 무엇을 의미합니까? 이런 종류의 질문은 정말 싫지만, 정말 귀찮아서, 다음과 같이 물어보겠습니다. 아래 코드에서 : 연산자의 기능은 무엇입니까? #include struct microFields { unsigned int addr:9; unsigned int cond:2; unsigned int wr:1; unsigned int rd:1; unsigned int mar:1; unsigned int alu:3; unsigned int b:5; unsigned int a:5; unsigned int c:5;..

programing 2023.10.29

void* 대신 intptr_t를 사용?

void* 대신 intptr_t를 사용? 사용하는 것이 좋습니까?intptr_t대신에 범용 저장소(포인트와 정수 값을 유지하기 위해)로서.void*? (여기서 보는 것처럼: http://www.crystalspace3d.org/docs/online/manual/Api1_005f0-64_002dBit-Portability-Changes.html) 이미 읽은 내용: int->void*->int왕복은 원래의 가치를 보장하지 않습니다. 아마도.int->intptr_t->int할 거다. 양자 모두에 대한 포인터 산술void*그리고.intptr_t깁스가 필요해서 아무도 여기서 이득을 얻지 못합니다. void*포인터를 저장할 때 덜 명시적인 캐스트를 의미합니다.intptr_t정수 값을 저장할 때 캐스트 수가 적음을 ..

programing 2023.10.24

문자 뺄셈을 이용한 cstrcmp 구현

문자 뺄셈을 이용한 cstrcmp 구현 저는 이러한 구현을 보았습니다.strcmp조금 전에, 그리고 저는 순수한 교육적인 목적을 위해 질문이 있습니다.입력을 16비트 정수로 변환하고 연산을 한 다음 다시 8비트로 변환해야 하는 이유는 무엇입니까?뺄셈을 8비트로 하는 것이 무슨 문제가 있습니까? int8_t strcmp (const uint8_t* s1, const uint8_t* s2) { while ( *s1 && (*s1 == *s2) ) { s1++; s2++; } return (int8_t)( (int16_t)*s1 - (int16_t)*s2 ); } 참고: 코드는 16비트를 가정합니다.int유형. 편집: C가 다음으로 변환을 한다고 언급했습니다.int(suppose 32비트) 기본값입니다.코드에..

programing 2023.10.24

argv의 문자열을 수정할 수 있습니까?

argv의 문자열을 수정할 수 있습니까? 저는 방금 C에서 명령 줄 인수를 읽는 작은 프로그램을 작성했는데, 너무 어려운 것은 아닙니다.매개 변수의 첫 번째 문자를 대문자로 바꾸는 등 수정 작업도 진행 중이었습니다. 문자열 리터럴은 정의되지 않은 동작을 일으킬 수 있기 때문에 수정하면 안 된다는 것을 알고 있습니다. 그래서 문자열이 정의되지 않은 것인지 궁금했습니다.*argv[]변해서는 안 되는 문자입니다. int main(int argc, char *argv[]) C11 표준 초안 N1570, §5.1.2.2.1/2: 매개변수들은argc그리고.argv그리고 그들이 가리키는 끈들은argv배열은 프로그램에 의해 수정 가능해야 하며, 프로그램 시작과 프로그램 종료 사이에 최종 stored 값을 유지해야 합니..

programing 2023.10.19

데이터 정렬이란 무엇입니까?C에 캐스팅 포인터를 입력할 때 왜 그리고 언제 걱정해야 합니까?

데이터 정렬이란 무엇입니까?C에 캐스팅 포인터를 입력할 때 왜 그리고 언제 걱정해야 합니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. 정렬된 메모리 할당이란 무엇입니까? (4개 답변) 정의되지 않은 동작입니다.엄격한 별칭 규칙 또는 잘못된 정렬? (4개 답변) 닫힘7년 전에. 정렬 시스템의 작동 방식과 일부 유형이 다른 유형보다 더 엄격하게 정렬되는 이유를 설명하는 괜찮은 문서를 찾을 수 없었습니다.간단히 설명해 보겠습니다. 데이터 정렬이란 무엇입니까? 컴퓨터의 아키텍처는 프로세서와 메모리로 구성되어 있습니다.메모리는 셀로 구성되므로 다음과 같습니다. 0x00 | data | 0x01 | ... | 0x02 | ... | 각 메모리 셀은 지정된 크기와 저장할 수 있는 비트의 양을 가집니다.이는 아..

programing 2023.10.14

gcc 옵션 "-fm메시지 길이"의 의미는 무엇입니까?

gcc 옵션 "-fm메시지 길이"의 의미는 무엇입니까? 저는 CDT(clipse for c language)를 사용하고 있습니다.기본 gcc 컴파일러 옵션은-O0 -g3 -Wall -c -fmessage-length=0. 의 의미가 무엇입니까?-fmessage-length? 그럴 것이-fflag, 하지만 어쩌죠?message-length? GCC 명령줄 옵션에서 찾을 수 없었습니다.배려해 주셔서 감사합니다. GCC 명령줄 옵션에서 찾을 수 없었습니다. 그것은 "GCC 매뉴얼의 명령줄 옵션 섹션의 수정 버전"을 보고 있기 때문입니다. 가능한 모든 GCC 명령줄 옵션의 공식 목록이며, 이 섹션은 "3.7 Options to Control Diagnostic Messages Formating"으로 이어집니다...

programing 2023.10.14

32 대 64 플랫폼 크기의 printf: 플랫폼 독립적인 방식으로 포맷 코드를 처리하려면 어떻게 해야 합니까?

32 대 64 플랫폼 크기의 printf: 플랫폼 독립적인 방식으로 포맷 코드를 처리하려면 어떻게 해야 합니까? 프로그램에서 사용한 메모리 양을 출력하는 코드가 있습니다.선이 이와 비슷합니다. printf("The about of RAM used is %u", anIntVariable*sizeof(double) ); 여기서 IntVariable은 이중 배열의 요소 수에 대한 int 변수입니다.어쨌든 32비트 시스템에서는 아무런 문제가 없었지만 64비트 시스템에서는 부호 없는 긴 정수에 "%u"를 사용하는 것에 대해 컴파일러 경고를 받습니다.%lu를 포맷 코드로 사용하면 64비트에서 문제가 해결되지만, 타입이 부호 없는 int로 되돌아가기 때문에 컴파일러가 32비트에서 불평하게 됩니다.실제로 32비트 시스..

programing 2023.10.14

.bss vs COMMEN: 어디로 가는 거지?

.bss vs COMMEN: 어디로 가는 거지? 내 책에서: .bss: 초기화되지 않은 전역 C 변수 공통: 아직 할당되지 않은 초기화되지 않은 데이터 개체 제가 말씀드릴 수 있는 것은 확실한 차이는 보이지 않습니다.초기화되지 않은, 할당되지 않은 데이터 객체가 뭔지도 잘 모르겠어요...아무것도 아닌 것 같습니다.의 GNU다를해 봤습니다.readelf간단한 C 코드를 살펴보려 하지만 공통 기호를 찾을 수 없는 도구입니다. FORTRAN의 COMMEN TYPE다는 누가 나를 위해 그 둘을 구별해 줄 수 있습니까?만약 가능하다면, 바라건대 C 예?대단히 감사합니다. edit: 이 게시물에서 변수 여기: int c; int main() {} ... 하지만 를 합니다. 하지만 사용하는 것은.objdump -tc..

programing 2023.10.09

문자열을 더블로 변환하면 리터럴 더블과 같습니까?

문자열을 더블로 변환하면 리터럴 더블과 같습니까? 예를 들어, assert(atof("1.2") == 1.2); 어떤 플로트를 사용하든 상관없이? 부동 소수점 정밀도가 정확하지 않은 것으로 알고 있는데, 정확하지 않은데 반올림에서 이진으로 가는 것도 같은 두 배가 나오는 건가요?이것은 C 표준에서는 보장되지 않습니다.소스 코드에서 부동 소수점 리터럴을 변환하는 시맨틱스는 C 2011 [draft N1570] 6.4.4.2에 명시되어 있습니다.이것은 권장하지만 필수는 아니지만 부동 소수점 상수의 변환 시간 변환은 라이브러리 함수에 의한 문자열의 실행 시간 변환과 일치해야 한다는 것을 말합니다.strtod. 그 이상으로, 표준은 심지어 다음과 같은 수학적 가치를 가진 두 개의 다른 리터럴을 요구하지 않습니다..

programing 2023.10.09
반응형