반응형

C 100

긴 인쇄 방법

긴 인쇄 방법 PI 바로 옆에 있는 프로그램을 하고 있는데 오래 쓰려고 하는데 작동이 안 돼요.여기 코드가 있습니다. #include #include typedef long long num; main(){ num pi; pi=0; num e, n; scanf("%d", &n); for(e=0; 1;e++){ pi += ((pow((-1.0),e))/(2.0*e+1.0)); if(e%n==0) printf("%15lld -> %1.16lld\n",e, 4*pi); //printf("%lld\n",4*pi); } } %lld표준 C99 방식입니다만, 사용하고 있는 컴파일러(mingw32-gcc v4.6.0)에서는 동작하지 않습니다.이 컴파일러에서는 다음과 같은 작업을 수행할 수 있습니다.%I64d 그럼 이렇..

source 2022.08.16

C에서 exit()를 사용해야 합니까?

C에서 exit()를 사용해야 합니까? 사용법에 대한 질문이 있습니다.exitC++로 표시됩니다.답변은 주로 RAII 때문에 좋은 생각이 아니라고 주장한다. 예를 들어 다음과 같다.exit는 코드의 어딘가에서 호출되며 오브젝트의 소멸자는 호출되지 않습니다.따라서 예를 들어 파괴자가 파일에 데이터를 쓰도록 의도된 경우 파괴자가 호출되지 않았기 때문에 이러한 현상이 발생하지 않습니다. 저는 C의 상황이 어떤지 궁금했습니다.C에서도 같은 문제가 적용됩니까?C에서는 컨스트럭터/파괴자를 사용하지 않기 때문에 C에서는 상황이 다를 수 있다고 생각했습니다.그럼 사용해도 될까요?exit예를 들어 다음과 같은 기능이 C에서 사용되는 것을 본 적이 있습니다. void die(const char *message) { if(..

source 2022.08.14

고속 정수형이 다른 정수형보다 빠른 이유는 무엇입니까?

고속 정수형이 다른 정수형보다 빠른 이유는 무엇입니까? ISO/IEC 9899:2018(C18)에서는 7.20.1.3에 따라 기술되어 있습니다. 7.20.1.3 가장 빠른 최소 폭 정수형 1 다음 각 유형은 적어도 지정된 폭을 가진 모든 정수 유형 중에서 일반적으로268) 가장 빠르게 작동하는 정수 유형을 지정합니다. name 2 typedef 。int_fastN_t 있는 . typedef 。uint_fastN_t인 가장 정수 . 3 다음 유형이 필요합니다. int_fast8_t,int_fast16_t,int_fast32_t,int_fast64_t,uint_fast8_t,uint_fast16_t,uint_fast32_t,uint_fast64_t 이 양식의 다른 모든 유형은 선택 사항입니다. 268) 지정..

source 2022.08.14

L 또는 UL을 긴 값으로 명시적으로 선언하는 이유는 무엇입니까?

L 또는 UL을 긴 값으로 명시적으로 선언하는 이유는 무엇입니까? 예로부터 unsigned long x = 12345678UL 위의 예에서 컴파일러는 4바이트(32비트)의 메모리를 설정하기 위해 "긴" 메모리만 표시하면 된다는 것을 항상 알고 있습니다.문제는 L/UL이 길다고 선언한 후에도 긴 상수에 L/UL을 사용해야 하는 이유입니다. 「」의 .L ★★★★★★★★★★★★★★★★★」UL을 사용하다컴파일러는 목록의 상수를 포함할 수 있는 첫 번째 유형을 사용합니다(C99 표준, 절 6.4.4:5 참조).는 is소음음음음음음음음음음음음이다.int,long int,long long int를 참조해 주세요. 따라서 대부분의 경우 접미사를 사용할 필요가 없습니다.프로그램의 의미는 바뀌지 않습니다. 예에서는 '의 ..

source 2022.08.14

이 이미지 처리 테스트에서 Swift가 C보다 100배 느린 이유는 무엇입니까?

이 이미지 처리 테스트에서 Swift가 C보다 100배 느린 이유는 무엇입니까? 이 질문에는 이미 답변이 있습니다. Swift Beta 퍼포먼스: 어레이 정렬 (9개의 답변) 닫힘7년 전. 다른 많은 개발자들처럼 나도 애플의 새로운 스위프트 언어에 매우 흥분해 왔다.애플은 자사의 속도가 Objective C보다 빠르며 운영체제를 쓸 수 있다고 주장했다.그리고 지금까지 배운 바로는 정적 언어이며 정확한 데이터 유형(정수 길이 등)을 제어할 수 있습니다.즉, 이미지 처리와 같은 퍼포먼스에 중요한 작업을 처리할 가능성이 높은 것 같습니다. 간단한 테스트를 하기 전에 그렇게 생각했어요.그 결과는 정말 나를 놀라게 했다. 다음은 C의 간단한 코드 스니펫입니다. test.c: #include #include #in..

source 2022.08.14

오래된 C 컴파일러를 사용하는 것은 보안상의 위험입니까?

오래된 C 컴파일러를 사용하는 것은 보안상의 위험입니까? 아무도 신경 쓰지 않는 제조 시스템이 있으며, 이 기계들은 GCC 3이나 GCC 2와 같은 오래된 버전의 GCC를 실행하고 있습니다. 그리고 나는 경영진을 설득할 수 없다: 그들은 "고장나지 않았다면 고치지 말라"고 말한다. 매우 오래된 코드 베이스(80년대에 작성)를 유지하고 있기 때문에, 이 C89 코드는 이러한 컴파일러로 올바르게 컴파일 됩니다. 하지만 나는 이 오래된 물건들을 사용하는 것이 좋은 생각인지 모르겠어. 질문입니다. 오래된 C 컴파일러를 사용하면 컴파일된 프로그램의 보안이 손상될 수 있습니까? 갱신: 같은 코드가 Windows 타겟용으로 Visual Studio 2008에 의해 구축되어 MSVC는 아직 C99 또는 C11을 지원하..

source 2022.08.13

파일이 없는 경우 파일을 만듭니다(C).

파일이 없는 경우 파일을 만듭니다(C). 파일이 있으면 프로그램에서 열거나 파일을 생성하려고 합니다.다음 코드를 사용하려고 하는데 freopen.c에서 debug assertion이 나타납니다.fclose를 사용한 후 바로 fopen을 사용하는 것이 좋을까요? FILE *fptr; fptr = fopen("scores.dat", "rb+"); if(fptr == NULL) //if file does not exist, create it { freopen("scores.dat", "wb", fptr); } 일반적으로 이 작업은 단일 시스템 내에서 수행해야 합니다. 그렇지 않으면 레이스 상태가 됩니다. 읽기 및 쓰기를 위해 열리며 필요한 경우 파일을 만듭니다. FILE *fp = fopen("scores.d..

source 2022.08.13

C99의 func()와 func(void)의 비교

C99의 func()와 func(void)의 비교 void func() 실제로 빈 파라미터는 모든 인수가 허용됨을 의미합니다. void func(void)는 인수를 받지 않습니다. 그러나 Standard C99에는 다음과 같은 행이 있습니다. 포함) 6.7.5.3 기능 선언자(기능 선언자) 14 식별자 리스트는 함수 파라미터의 식별자만을 선언한다.함수 정의의 일부인 함수 선언자의 빈 목록은 함수에 매개 변수가 없음을 나타냅니다.함수 정의의 일부가 아닌 함수 선언자의 빈 목록은 매개 변수의 수 또는 유형에 대한 정보를 제공하지 않도록 지정합니다. ★★★★★★★★★★★★★★★★★★★★★★★.func() ★★★★★★★★★★★★★★★★★」func(void)★★★★★★★★★★★★★★★★★★?TL;DR 선언문에서 ..

source 2022.08.13

이게 뭐야?255] =" 구문을 C로 표시합니까?

이게 뭐야?255] =" 구문을 C로 표시합니까? js0n.c에 대한 참조 코드 구문은 다음과 같습니다. static void *gostruct[] = { [0 ... 255] = &&l_bad, ['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop, ['"'] = &&l_qup, [':'] = &&l_loop, [','] = &&l_loop, ['['] = &&l_up, [']'] = &&l_down, // tracking [] and {} individually would allow fuller validation but is really messy ['{'] = &&l_up, ['}'] = &&l_down, ['-'] =..

source 2022.08.13

Visual Studio 디버거에서 동적으로 할당된 어레이를 표시하는 방법

Visual Studio 디버거에서 동적으로 할당된 어레이를 표시하는 방법 정적으로 할당된 배열이 있는 경우 Visual Studio 디버거는 모든 배열 요소를 쉽게 표시할 수 있습니다.단, 어레이가 동적으로 할당되어 포인터로 가리키고 있는 경우 +를 클릭하여 어레이를 확장하면 어레이의 첫 번째 요소만 표시됩니다.디버거에 Foo와 X 사이즈의 배열로 이 데이터를 표시하는 쉬운 방법이 있습니까?네, 간단해요.가지고 있다고 하다 char *a = new char[10]; 디버거에 쓰기: a,10 는 콘텐츠를 배열처럼 표시합니다.어레이 m4x4의 데이터를 표시하는 방법에는 다음 두 가지가 있습니다. float m4x4[16]={ 1.f,0.f,0.f,0.f, 0.f,2.f,0.f,0.f, 0.f,0.f,3.f..

source 2022.08.12
반응형