반응형

c 38

n=5일 때 내 컴파일러와 OS로 pow(n,2)가 24를 반환하는 이유는 무엇입니까?

n=5일 때 내 컴파일러와 OS로 pow(n,2)가 24를 반환하는 이유는 무엇입니까? #include #include #include int main() { int n,i,ele; n=5; ele=pow(n,2); printf("%d",ele); return 0; } 출력은24. 코드:: GNU/GCC를 사용하고 있습니다.블록들. 무슨 일입니까? 알아요.pow함수는 a를 반환합니다.double,그렇지만25int 타입에 들어맞는데 왜 이 코드는 a를 출력합니까?24대신에25? 만약에n=4; n=6; n=3; n=2;코드는 작동하지만 5개의 경우에는 작동하지 않습니다.여기서 발생할 수 있는 일이 있습니다.당신은 당신의 컴파일러의 구현을 보고 이것을 확인할 수 있을 것입니다.pow함수: 올바른 #includ..

bestsource 2023.10.11

루프가 있는 프로그램은 CTRL + C로 종료되지 않습니다.

루프가 있는 프로그램은 CTRL + C로 종료되지 않습니다. 사용자가 CTRL + C를 눌러 중단될 때까지 실행하고 싶은 프로그램이 있습니다.제가 그것을 누르면 아무 일도 일어나지 않고 프로그램을 중단하고 그 이후에 수동으로 종료해야만 프로그램을 종료할 수 있습니다. 이 코드는 무한 실행이 필요한 부분입니다. while(true) { liveOrDie(field); printOut(field); } 첫 번째 함수는 2차원 배열에 1 또는 0을 넣을 것인지 계산하고 두 번째 함수는 다음과 같이 for loop을 사용하여 출력합니다. void printOut(int field[38][102]) { for(int i = 0; i < 38; i++) { for(int j = 0; j < 102; j++) { i..

bestsource 2023.10.11

ASM을 C로 변환(리버스 엔지니어 아님)

ASM을 C로 변환(리버스 엔지니어 아님) 구글 검색을 해보니 기본적으로 그런 질문을 한 질문자를 비웃는 수준의 경솔한 답변들이 눈에 띕니다. 마이크로칩은 소스코드를 무료로 제공합니다(아니오일 경우를 대비해 여기에 게시하고 싶지 않습니다).기본적으로 google AN937, 첫번째 링크를 클릭하면 "source code" 및 ziped file"에 대한 링크가 있습니다.그건 ASM에 있는데 그걸 보면 눈이 마주치기 시작합니다.제가 따라 할 수 있도록 c타입 언어와 비슷한 것으로 바꾸고 싶습니다.다음과 같은 선이 있기 때문입니다. GLOBAL _24_bit_sub movf BARGB2,w subwf AARGB2,f 아마 아주 단순할 것입니다만 저에게는 아무 의미가 없습니다. 자동화된 ASM-C 번역기가 있..

bestsource 2023.10.11

openstdin, stdout, stderr 방향 전환을 제어하는 방법?

openstdin, stdout, stderr 방향 전환을 제어하는 방법? 저는 popen()이 유닉스에서 자식 프로세스의 stdin, stdout 및 stderr을 어떻게 리디렉션하는지에 대해 혼란스럽습니다.popen()의 man 페이지는 이와 관련하여 매우 명확하지 않습니다.더콜 FILE *p = popen("/usr/bin/foo", "w"); 자식 프로세스를 포크하고 "-c", "/usr/bin/foo" 인수가 있는 셸을 실행하고 이 셸의 stdin(foo의 stdin으로 리디렉션됨)을 stdout 상단으로 리디렉션합니다.하지만 stderr는 어떻게 됩니까?그 이면의 일반적인 원리는 무엇입니까? foop에서 파일을 열었을 때(fopen, socket, accept 등을 사용) 부모 프로세스에 st..

bestsource 2023.10.01

C 휘발성 변수와 캐시 메모리

C 휘발성 변수와 캐시 메모리 캐시는 프로세서에 투명하게 캐시 하드웨어에 의해 제어되므로 C 프로그램에서 휘발성 변수를 사용할 경우 내 프로그램이 지정된 실제 메모리 주소에서 매번 데이터를 읽지만 캐시는 읽을 수 없다는 것이 어떻게 보장됩니까? 제가 알기로는.. Volatile 키워드는 컴파일러에게 변수 참조가 최적화되어서는 안 되며 코드에 프로그래밍된 대로 읽혀야 한다고 말합니다. 캐시는 캐시 하드웨어에 의해 투명하게 제어되므로 프로세서가 주소를 발행할 때 데이터가 캐시에서 오는 것인지 메모리에서 오는 것인지 알 수 없습니다. 그러면 메모리 주소를 매번 읽어야 한다는 요구사항이 있는 경우 캐시에서 참조되지 않고 필요한 주소에서 참조되는지 확인하려면 어떻게 해야 합니까? 어찌된 일인지 이 두 가지 개념은..

bestsource 2023.10.01

C에서 전역 변수는 항상 0으로 초기화됩니까?

C에서 전역 변수는 항상 0으로 초기화됩니까? 이 질문에는 이미 다음과 같은 답변이 있습니다. 전역 및 정적 변수가 기본값으로 초기화되는 이유는 무엇입니까? (5개 답변) 닫힘7년 전에. #include int a[100]; int main(){ printf("%d",a[5]); return 0; } 위 코드는 항상 '0'을 출력합니까, 아니면 컴파일러 고유의 것입니까?저는 gcc 컴파일러를 사용하고 있는데 출력이 '0'으로 나왔습니다.네, 멤버 전원이.a0으로 초기화할 것을 보장합니다. C89 표준 제3.5.7절부터 정적 저장 기간이 있는 개체가 명시적으로 초기화되지 않은 경우 산술 형식을 가진 모든 멤버에 0이 할당되고 포인터 형식을 가진 모든 멤버에 null 포인터 상수가 할당된 것처럼 암묵적으로 ..

bestsource 2023.10.01

a = 0, b = a++, c = a++의 정의가 C에 정의된 동작을 가지고 있습니까?

a = 0, b = a++, c = a++의 정의가 C에 정의된 동작을 가지고 있습니까? 가 .int a = 0, b = a++, c = a++;C에서 행동을 정의했습니까? 또는 이와 거의 동일하게 객체 정의의 쉼표가 식의 쉼표 연산자에 대한 시퀀스 포인트를 도입합니까? C++에 대해서도 비슷한 질문이 제기되었습니다. 'inta = 0, b = a'에 정의되지 않은 동작이 있습니까? 변수 목록의 쉼표가 시퀀스 포인트입니까? C++ : 변수선언초기화순서 C++에 대해 널리 인정되는 답변은 예, C++11 표준의 8/3항에 따라 완전히 정의됩니다. 선언문의 각 init-declarator는 마치 선언문에 있는 것처럼 별도로 분석됩니다. 비록 이 단락은 구문 분석 단계만을 언급할 뿐이고 런타임 시 연산 순서에..

bestsource 2023.10.01

두 문자열 리터럴의 연결은 어떻게 작동합니까?

두 문자열 리터럴의 연결은 어떻게 작동합니까? char* a="dsa" "qwe"; printf("%s", a); 출력:dsaqwe 제 질문은 이 물건이 왜 작동하는지 입니다.두 문자열 리터럴 사이에 공백이나 아무것도 주지 않으면 문자열 리터럴이 연결됩니다. 이게 어떻게 작동하는 겁니까?ISO C 표준에 의해 정의되며, 인접한 문자열 리터럴이 하나로 결합됩니다. 언어는 조금 건조하지만(결국 표준입니다) 섹션6.4.5 String literals의C11상태: 번역 단계 6에서, 인접한 문자의 임의의 시퀀스 및 동일하게 프리픽스된 넓은 문자열 리터럴 토큰에 의해 지정된 멀티바이트 문자 시퀀스는 단일 멀티바이트 문자 시퀀스로 연결됩니다. 이는 에도 언급되어 있습니다.5.1.1.2 Translation phas..

bestsource 2023.09.26

메모리에서 컴퓨터 코드 실행 중

메모리에서 컴퓨터 코드 실행 중 메모리에 저장된 기계 코드를 실행하는 방법을 찾고 있습니다. 다음 코드가 있습니다. #include #include int main(int argc, char* argv[]) { FILE* f = fopen(argv[1], "rb"); fseek(f, 0, SEEK_END); unsigned int len = ftell(f); fseek(f, 0, SEEK_SET); char* bin = (char*)malloc(len); fread(bin, 1, len, f); fclose(f); return ((int (*)(int, char *)) bin)(argc-1, argv[1]); } 위의 코드는 GCC에서는 잘 컴파일되지만, 명령줄에서 다음과 같이 프로그램을 실행하려고 하면..

bestsource 2023.09.26

C/C++ 컴파일러는 어떻게 작동합니까?

C/C++ 컴파일러는 어떻게 작동합니까? 10년이 넘는 C/C++ 코딩 기간 동안, 저는 다음과 같은 패턴을 발견했습니다. 매우 훌륭한 프로그래머들은 컴파일러 내부에 대한 자세한 지식을 가지고 있는 경향이 있습니다. 저는 상당히 훌륭한 프로그래머이고, 특별한 컴파일러 "superstitions" 모음을 가지고 있기 때문에, 제 지식을 재부팅하고 기초부터 시작하고 싶습니다. 온라인 자료나 좋아하는 책에 대한 링크를 추천해 줄 수 있는 사람?특히 C/C++ 컴파일, 최적화, GCC 및 LLVM에 관심이 있습니다.Dragon book부터 시작..(코드 최적화 및 코드 생성에 대해 더 강조) Decaf or Cool과 같은 교육용 프로그래밍 언어를 위한 장난감 컴파일러를 작성해 보십시오. 프론트엔드를 위해 파서..

bestsource 2023.09.26
반응형