반응형

C 100

C NULL이 C++11 Nullptr과 같습니까?

C NULL이 C++11 Nullptr과 같습니까? 나는 사용하기를 좋아합니다.nullptrNULL 대신 입력합니다.이제 C 함수를 호출합니다.libjansson이 경우). NULLC에서는 구현이 정의되어 있습니다. 위해서nullptr"Null 포인터 상수는 0으로 평가되는 정수 유형의 정수 상수 식(5.19) r 값입니다." 그래서 가장 안전한 방법은: auto string_obj=json_object_get(m_handle,name); if(string_obj!=NULL) { auto string=json_string_value(string_obj); if(string!=NULL) {return string;} } return nullptr; 정말로 필요한가요? 아니면 더 간단하게 할 수 있나요? a..

source 2023.06.23

C에서 음의 숫자를 이동합니다.

C에서 음의 숫자를 이동합니다. 저는 다음과 같은 C 코드를 가지고 있습니다. int nPosVal = +0xFFFF; // + Added for ease of understanding int nNegVal = -0xFFFF; // - Added for valid reason 이제 내가 노력할 때 printf ("%d %d", nPosVal >> 1, nNegVal >> 1); 알겠습니다 32767 -32768 이게 예상된 건가요? 저는 다음과 같은 것을 생각할 수 있습니다. 65535 >> 1 = (int) 32767.5 = 32767 -65535 >> 1 = (int) -32767.5 = -32768 즉, -32767.5는 -32768로 반올림됩니다. 이 이해가 맞습니까?당신의 구현체는 아마도 2의 ..

source 2023.06.23

왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요?

왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요? 다음과 같은 기능이 있습니다. void getdata(int arr[], int n) { for (int i = 0; i < n; i++) { int a = srand(time(NULL)); arr[i] = a; } } 그리고 나는 그것을 불러들입니다.main: getdata(arr, 1024); 저는 "무시되어야 할 공허한 가치"를 받지만, 무엇이 잘못된 것인지 이해하지 못합니다.이 오류가 발생하는 이유는 무엇입니까? int a = srand(time(NULL)); 의 프로토타입srand이라void srand(unsigned int)(포함하는 경우)). 이는 아무것도 반환하지 않는다는 것을 의미하지만 반환되는 값을 사용하고 있습니다(??..

source 2023.06.18

배열의 일부 요소만 일부 값으로 초기화하는 방법은 무엇입니까?

배열의 일부 요소만 일부 값으로 초기화하는 방법은 무엇입니까? 모두가 아닌 일부 값을 배열에 할당할 수 있습니까?내가 원하는 것을 명확히 하기 위해: 다음과 같은 배열이 필요한 경우{1,0,0,0,2,0,0,0,3,0,0,0}다음과 같이 만들 수 있습니다. int array[] = {1,0,0,0,2,0,0,0,3,0,0,0}; 이 배열의 대부분의 값은 '0'입니다.이 값을 건너뛰고 값 1, 2 및 3만 할당할 수 있습니까?저는 다음과 같은 것을 생각합니다. int array[12] = {0: 1, 4: 2, 8: 3}; 이 값을 건너뛰고 값 1, 2 및 3만 할당할 수 있습니까? C에서, 네.지정된 이니셜라이저(C99에 추가되고 C++에서는 지원되지 않음)를 사용합니다. int array[12] = {..

source 2023.06.18

Linux에서 pid_t, uid_t, gid_t의 크기

Linux에서 pid_t, uid_t, gid_t의 크기 Linux 시스템(32비트 또는 64비트)의 경우 크기는pid_t,uid_t,그리고.gid_t?#include #include int main() { printf("pid_t: %zu\n", sizeof(pid_t)); printf("uid_t: %zu\n", sizeof(uid_t)); printf("gid_t: %zu\n", sizeof(gid_t)); } 편집: 일반적인 요청에 따라(실제로 이 질문에 응답하는 사람의 99%가 x86 또는 x86_64를 실행할 예정이기 때문에)... Linux >= 3.0.0을 실행하는 i686 및 x86_64(32비트 및 64비트) 프로세서에서는 다음과 같이 답합니다. pid_t: 4 uid_t: 4 gid_..

source 2023.06.13

비트필드에서 비트 엔디안이 문제가 되는 이유는 무엇입니까?

비트필드에서 비트 엔디안이 문제가 되는 이유는 무엇입니까? 비트필드를 사용하는 모든 휴대용 코드는 리틀엔디언 플랫폼과 빅엔디언 플랫폼을 구별하는 것으로 보입니다.이러한 코드의 예는 Linux 커널의 structure iphdr 선언을 참조하십시오.나는 왜 비트 엔디안이 문제가 되는지 전혀 이해하지 못한다. 제가 알기로는 비트필드는 순전히 컴파일러 구조이며 비트레벨 조작을 용이하게 하기 위해 사용됩니다. 들어 비트필드에 대해 해 보겠습니다. struct ParsedInt { unsigned int f1:1; unsigned int f2:3; unsigned int f3:4; }; uint8_t i; struct ParsedInt *d = &i; Here, writing d->f2 is simply a co..

source 2023.01.19

매크로가 정의되어 있지 않다면 왜 매크로만 정의합니까?

매크로가 정의되어 있지 않다면 왜 매크로만 정의합니까? C코드 베이스 전체에 걸쳐 모든 매크로가 다음과 같이 정의되어 있습니다. #ifndef BEEPTRIM_PITCH_RATE_DEGPS #define BEEPTRIM_PITCH_RATE_DEGPS 0.2f #endif #ifndef BEEPTRIM_ROLL_RATE_DEGPS #define BEEPTRIM_ROLL_RATE_DEGPS 0.2f #endif #ifndef FORCETRIMRELEASE_HOLD_TIME_MS #define FORCETRIMRELEASE_HOLD_TIME_MS 1000.0f #endif #ifndef TRIMSYSTEM_SHEARPIN_BREAKINGFORCE_LBS #define TRIMSYSTEM_SHEARPIN_BRE..

source 2023.01.15

오래된 Mac OS의 C 컴파일러에서 \n의 값은 얼마입니까?

오래된 Mac OS의 C 컴파일러에서 \n의 값은 얼마입니까? 배경: Mac OS 버전 9 이전 버전에서는 텍스트 파일의 표준 표현이 ASCII CR(캐리지 리턴) 문자(값 10진수 13)를 사용하여 줄의 끝을 표시했습니다. Mac OS 10은 이전 릴리스와 달리 UNIX와 유사하며 ASCII LF(라인 피드) 문자(값 10진수 10)를 사용하여 행의 끝을 표시합니다. , 즉 상수의 됩니까'\n' ★★★★★★★★★★★★★★★★★」'\r'의 C++ 컴파일러를 X보다 할 수 있습니까? 취할 수 있는 접근법에는 적어도 두 가지가 있습니다. '\n'및 시 orASCII LF 문자로 변환하고 텍스트 스트림에서 출력 및 입력 시 CR로 변환합니다(Windows 시스템에서 LF와 CR-LF 간의 변환과 유사). '\..

source 2022.11.05

C의 _Bool 타입과 Bool 타입의 차이?

C의 _Bool 타입과 Bool 타입의 차이? 누가 설명해주실 수 있나요?_Bool그리고.bool데이터 타입은 C로 표시합니까? 예를 들어 다음과 같습니다. _Bool x = 1; bool y = true; printf("%d", x); printf("%d", y); 이러한 데이터 유형은 C99에 추가되었습니다.부터boolC99 이전에 예약되어 있지 않습니다._Bool키워드(예약 완료). bool의 에일리어스입니다._Bool포함하면stdbool.h. 기본적으로는stdbool.hheader는 ID로 코드가 정상임을 나타냅니다.bool즉, 코드가 그 자체의 목적을 위해 사용하지 않는 것(식별자용으로 사용됨)인 경우true그리고.false).차이가 없다. bool로 확장되는 매크로입니다._Bool에stdboo..

source 2022.10.27

출력이 파일로 리다이렉트되면 printf() 및 system()의 결과가 잘못된 순서로 나타난다.

출력이 파일로 리다이렉트되면 printf() 및 system()의 결과가 잘못된 순서로 나타난다. 이 질문에는 이미 답변이 있습니다. 출력 리다이렉션에서 write()가 printf()보다 먼저 인쇄되는 이유는 무엇입니까? (3개의 답변) 새로운 행이 포맷 문자열에 포함되지 않는 한 printf가 콜 후에 플러시되지 않는 이유는 무엇입니까? (10개의 답변) 닫힘3년 전. 나는 myprogram이라는 실행 파일로 컴파일하는 C 프로그램을 가지고 있다.주요 기능은 다음과 같습니다. int main(int argc, char ** argv) { printf("this is a test message.\n"); system("ls"); return 0; } 내가 달릴 때myprogram > output.txt..

source 2022.10.23
반응형