반응형

C 33

끝에 null로 끝나는 char(\0)가 없는 문자열 정의

끝에 null로 끝나는 char(\0)가 없는 문자열 정의 C/C++에서 끝에 null ending char(\0)가 없는 문자열을 정의하는 다양한 방법은 무엇입니까? 편집: STL 문자열이 아닌 문자 배열에만 관심이 있습니다.일반적으로 다른 포스터가 쓴 것처럼: char s[6] = {'s', 't', 'r', 'i', 'n', 'g'}; 또는 현재 Charset이 ASCII인 경우, 이는 일반적으로 참(오늘날에는 EBCDIC가 많지 않음) char s[6] = {115, 116, 114, 105, 110, 107}; C(C++가 아닌)에서만 작동하는 크게 무시된 방식도 있습니다. char s[6] = "string"; 배열 크기가 너무 작아 마지막 0을 유지할 수 없는 경우(그러나 일정한 문자열의 다..

code 2023.09.25

printf("%x",1)가 정의되지 않은 동작을 호출합니까?

printf("%x",1)가 정의되지 않은 동작을 호출합니까? C 표준(6.5.2.2항 6)에 의거합니다. 호출된 함수를 나타내는 표현식이 프로토타입을 포함하지 않는 유형을 가질 경우 각 인수에 대해 정수 승격을 수행하고 유형 플로트가 있는 인수는 이중으로 승격합니다.이를 기본 인수 프로모션이라고 합니다.인수의 수가 매개 변수의 수와 같지 않으면 동작이 정의되지 않습니다.함수가 프로토타입을 포함하는 유형으로 정의되고 프로토타입이 생략(, ...)으로 끝나거나 승격 후 인수의 유형이 매개 변수의 유형과 호환되지 않으면 동작이 정의되지 않습니다.프로토타입이 포함되지 않은 유형으로 함수가 정의되고, 승격 후 인수의 유형이 승격 후 인수의 유형과 호환되지 않는 경우, 다음의 경우를 제외하고는 동작이 정의되지 않..

code 2023.09.15

함수의 VLA 배열 매개 변수에 정수 대신 별표([*])를 사용하는 이유는 무엇입니까?

함수의 VLA 배열 매개 변수에 정수 대신 별표([*])를 사용하는 이유는 무엇입니까? 함수에서 매개 변수로 가변 길이 배열을 사용하는 경우 int sum(int n, int a[n]); 번째 파라미터를 를 하기 하기 ( )n) 두 매개변수 의 를 합니다 ( )의a). 그러나 매개 변수로 VLA에 사용되는 또 다른 프로토타입을 접했습니다. int sum(int n, int a[*]); 그 이유를 이해하기가 정말 어렵습니다.*됩니다 됩니다.n에서 안에[]?[*]구문은 기능 프로토타입을 선언할 때 사용됩니다.여기서 핵심적인 세부 사항은 기능 프로토타입에서 매개 변수 이름을 지정할 필요가 없고 각 매개 변수의 유형만 지정하면 된다는 것입니다. 예를 들어, 첫 번째 매개 변수를 이름을 지정하지 않은 채로 둔다면..

code 2023.09.15

NSUInter 대 NSInter, Int 대 Unsigned 및 유사한 경우

NSUInter 대 NSInter, Int 대 Unsigned 및 유사한 경우 NSUInter를 사용할 때와 NSInter를 사용할 때를 설명할 수 있는 전문 지식을 가진 사람이 있습니까? 반환된 값이 항상 서명되지 않는 경우에도 저는 Cocoa methods가 NSInteger를 반환하는 것을 보았습니다. 근본적인 이유는 무엇입니까?NSInteger 또는 Integrity는 음의 값을 표현하고자 하는 경우로 엄격히 제한됩니까? NSObjCR 런타임에서.h: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigne..

code 2023.09.15

윈도우 7에서 C 프로그래밍을 컴파일하는 방법은?

윈도우 7에서 C 프로그래밍을 컴파일하는 방법은? 문 닫았습니다.이 질문은 책, 도구, 소프트웨어 라이브러리 등에 대한 권장 사항을 찾고 있습니다.충족되지 않습니다.스택 오버플로 지침.현재 답변을 받지 않고 있습니다. 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 질문은 허용하지 않습니다.질문을 편집하여 사실과 인용으로 답변할 수 있습니다. 8년 전에 문을 닫았습니다. 이 질문을 개선합니다. 윈도우 7에서 C 프로그램을 컴파일할 수 있는 무료 도구를 찾고 있습니다.나는 예전에 항상 gcc를 이용해서 우분투에서 C 코드를 컴파일했습니다.그렇다면 윈도우 7에서 C 코드를 컴파일하려면 어떻게 해야 합니까?가르쳐주세요 :)MinGW는 상당히 오래된 버전의 GCC(3.4.5)를 사용하고 있으며, 한동..

code 2023.09.15

C에서 메모리를 어떻게 해제합니까?

C에서 메모리를 어떻게 해제합니까? 저는 1, 2차원 배열이 많은 코드를 작성하고 있습니다."오류: 영역을 할당할 수 없습니다"라는 오류가 발생했는데 메모리가 너무 많이 할당되어 있는 것 같습니다.저는 "malloc"과 "free" 기능을 사용하지만, 제가 제대로 사용하고 있는지 확신할 수 없습니다.C에서 메모리 관리에 대한 좋은 예를 어디서 볼 수 있는지 알고 계십니까? 그래서.. 나는 단지 하나의 알고리즘을 작동시키려고 노력하고 있고, 지금은 이 코드가 단지 함수 이후의 함수일 뿐입니다. //memory allocation for 1D arrays buffer = malloc(num_items*sizeof(double)); //memory allocation for 2D arrays double **..

code 2023.09.05

기본적으로 int가 아닌 정수 리터럴 유형?

기본적으로 int가 아닌 정수 리터럴 유형? 저는 방금 이 질문에 답했습니다. 이 질문은 for 루프에서 100억까지 반복하는 것이 10억까지 반복하는 것보다 왜 그렇게 오래 걸리느냐는 질문이었습니다. for (i = 0; i < 10000000000; i++) 저와 다른 많은 사람들의 분명한 대답은 반복 변수가 32비트(100억에 도달하지 않음)이고 루프가 무한 루프를 얻기 때문이라는 것이었습니다. 하지만 저는 이 문제를 깨달았지만, 여전히 컴파일러 내부에서 실제로 무슨 일이 일어나고 있는지 궁금합니다. 리터럴에 다음이 추가되지 않았기 때문입니다.L는 IMHO 타입이어야 .int32비트도 마찬가지입니다.따라서 오버플로로 인해 정상이어야 합니다.int도달할 수 있는 범위 내에 있습니다.에서 도달할 수 없..

code 2023.08.26

전역 변수로 결정된 크기로 배열을 만들 수 없는 이유는 무엇입니까?

전역 변수로 결정된 크기로 배열을 만들 수 없는 이유는 무엇입니까? 왜 레어사는이유하용를이▁the유▁why이▁does.a글로벌 변수에 의해 초기화되지 않음size? #include int size = 5; int main() { int a[size] = {1, 2, 3, 4, 5}; printf("%d", a[0]); return 0; } 컴파일 오류는 다음과 같이 표시됩니다. 변수 크기의 개체가 초기화되지 않을 수 있습니다. 제 말에 따르면, 어레이는 다음과 같이 초기화되어야 합니다.size. 그리고 (가능하다면) 글로벌 변수를 사용하는 것을 고집한다면 어떤 대답이 있을까요?C99, 6.7.8/3에서: 초기화할 엔티티 유형은 크기를 알 수 없는 배열이거나 가변 길이 배열 유형이 아닌 개체 유형이어야 합..

code 2023.08.21

C의 intain() vs void main()

C의 intain() vs void main() 이 질문에는 이미 다음과 같은 답이 있습니다. C와 C++에서 main()은 무엇을 반환해야 합니까? (19개 답변) 마감됨9년 전에. C에서, 나는 그것을 압니다.int main()반환합니다.int어디에void main()하지 않다.그 외에, 그들 사이에 차이점이 있습니까?첫 번째가 두 번째보다 낫습니까?대부분의 시간의 압도적인 대다수, 그 중 하나.int main(void)또는int main(int argc, char* argv[])당신이 사용해야 할 것입니다.특히, 만약 당신이 C 표준 라이브러리의 전체 세트와 함께 개인용 컴퓨터에서 실행하기 위해 주요 컴파일러에 의해 컴파일될 프로그램을 작성하고 있다면, 당신은 거의 확실하게 반환해야 합니다.int부..

code 2023.08.06

Linux에서 조건 연산자의 이상한 사용

Linux에서 조건 연산자의 이상한 사용 3.0.4 리눅스 커널에서 mm/filemap.c는 다음과 같은 코드 줄을 갖습니다. retval = retval ?: desc.error; 저는 gcc-Wall로 유사한 최소 테스트 사례를 컴파일하려고 시도했지만 경고를 받지 않았습니다. 동작은 다음과 같습니다. retval = retval ? retval : desc.error; C99 표준을 보면, 저는 이 행동을 공식적으로 설명하는 것이 무엇인지 알 수 없습니다.왜 이것이 괜찮은가요.몇몇 다른 사람들이 말했듯이, 이것은 GCC 확장이지, 어떤 표준의 일부가 아닙니다.만약 당신이 그것을 사용한다면 당신은 그것에 대해 경고를 받을 것입니다.-pedantic스위치를 켜다 이 확장의 요점은 이 경우에 실제로 보이지..

code 2023.08.01
반응형