조건반복문 강의 4분 40초쯤에서 if절 에서 2의약수 또는 3의약수가 참일때, 6의 배수가 아닌것을 세어라. 로 해석되는데요. 1.일단 해당강의에서 ‘약수’로 표현한건 전부 ‘배수’인거죠? 모두 %정수로 표기되는데 약수, 배수 혼용되어서요. ll 연산자는 둘중 하나만 참이어도 전체가 참...으로 배웠는데! 왜 각각의 배수를 함께합쳐서 12개로 풀어야하는지 이해가 안갑니다. 11:51초에서도 &&연산자는 둘다 참이어야 참인데, 위와 마찬가지로 2의배수중 3의배수가 아닌것을 골라야하는대 왜 이렇게 적용되는지 이해가 안갑니다. if문이 계속 괄호안에 반복되면 순차적으로 조건문을 실행하여 참인지 보면 되는건가요? 혹시 강좌에 나오는 예제들만 모아놓은 출력물은 없을까요? 강좌에서 나오는 꼭외워야할부분, 강의 마지막에 나오는 요약문도 출력물이 없을까요? 예제문제를 다시풀어보고싶은데 강의마다 예제나오는 부분을 찾아보기가 시스템이 수월하지않아서요 .
반복문강의 20:40초 for 과 while 반복문 풀이를 할때 for문은 i=5까지 반복한다하셨는데요. 어떻게 출력값이 짝수기준으로 while 출력물이 나오는지 이해가 안갑니다. i=1일때 for문으로 현재숫자:1 출력은 이해가 가구요. 그다음 while로 넘어갔는데 조건식이 false여서 다시 for문으로 돌아오는 것인가요? 왜 돌아가는지 이해가 안가서요. 그다음 2일땐 while 조건식이 True 여서 출력되고break로 빠져나오고 다시 for문으로 돌아가는건가요.
void print_binary(unsigned long n); void print_binary_loop(unsigned long n); int main() { unsigned long num = 10; print_binary_loop(num); print_binary(num); printf("\n"); return 0; } void print_binary_loop(unsigned long num) { while (1) { int q = num / 2; int r = num % 2; printf("%d", r); num = q; if (num == 0) break; } printf("\n"); } void print_binary(unsigned long num) { int r = num % 2; if (num >= 2) print_binary_loop(num / 2); printf("%d", r); return; } 재귀함수를 출력할때 loop쪽 함수 마지막에 pritnf("\n",r);때문에 101\n0으로 계속 출력되는데 강의 영상을 보아도 다른 부분이 없어서 어디가 잘못됐는지 모르겠습니다.
안녕하세요, “Java 언어 기출문제의 변형” 수업 수강 중 이해가지 않는 부분이 있어 질문 드리게 되었습니다. (4:30~) class A { A() { System.out.print(‘A’); } A(char x) { System.out.print(x); } } class B extends A { B() { super(); System.out.print(‘B’); } B(char x) { this(); System.out.print(x); } } public class Test { public static void main(String[] args) { A s1 = new A(‘X’); A s2 = new B(‘Y’); A s2 = new B(‘Y’); 이 부분을 실행할 때 부모생성자를 먼저 실행한 후 B(char x)를 실행하지 않고 B(char x)를 먼저 실행하는 이유가 궁금합니다. 동일 질문에 파라미터가 있는 것을 이미 실행했다면, 기본 생성자는 실행되지 않는다고 답변 주셨는데, 왜 이 코드에서는 파라미터가 있는 것을 실행하기 전에 부모 생성자를 먼저 실행하지 않는 것인지 궁금합니다.
아래처럼 코드를 작성했는데 문자를 입력받는 곳에서 버퍼는 지워져 quit이 가능하지만 정수를 받는 곳에서는 quit을 두번입력해야 가능해서 버퍼 지우는 것을 for문 밑에 하나 더 삽입했는데 이렇게 해도 문제가 없을까요? 작동상으로는 문제가 없는데 피드백이 궁금하여 남겨요. int main() { char c; int i; while (1) { printf("Enter the letter of your choice: \n"); printf("a. avengers b. beep\n"); printf("c. count q. quit\n"); scanf("%c", &c); while (getchar() != '\n') continue; if (c == 'a') printf("Avengers assemble!\n"); else if (c == 'b') printf("\a"); else if (c == 'c') { printf("Enter an inter: \n"); scanf("%d", &i); for (int j = 1; j <= i; ++j) printf("%d\n", j); while (getchar() != '\n') continue; } else if (c == 'q') break; } return 0; }
char(*complicated_fucntion1())[3] { return &char3; } 이런 문법을 배운 적이 있던가요..? 단순히 복잡한 선언이라고 하고 넘어가고 싶긴 한데, 어느정도는 이해를 해야 하는데 아예 처음 보는거라 뭐하는건지 감도 안잡힙니다..함수의 매개변수를 넣는 괄호도 없어 보이는데 함수라고 하셔서 혼란스럽네요ㅠㅠ
int32_t i32 는 32비트를 사용한다는 걸 아는데 왜 "printf를 사용할 때 형식 지정자를 무엇을 써야할지 알 수가 없죠" 라고 하시는 건가요? int32_t는 32비트의 메모리 사이즈를 항상 갖게 된다고 하셨는데 그럼 다른 플랫폼에서도 32비트라는 건 변함없다는 의미가 아닌가요? 그럼 inttypes.h, PRId32도 필요없는 거고.. 그저 간혹 int가 64비트일 수도 있는 환경을 대비해서 사용하는 건가요?
이 강의에서 나온 3가지 버전에서 동작을 보면 구조체를 초기화한 내용을 텍스트 파일 안에 저장하고, 텍스트 파일의 내용을 변경하여 다시 읽어들인 다음에 콘솔창에 출력하는 것으로 이해했습니다. 이중포인터를 사용하는 부분은 잘 이해하진 못했지만 구조체 포인터로 하는 부분은 구현도 했구요. 근데 바이너리 파일의 경우에는 단순히 읽거나 쓰는 용도로 사용하는 것이지 별도의 파일 편집기로 내용을 수정하기가 거의 불가능하다고 생각하고 있었는데 제 생각이 틀린걸까요? 그냥 교수님이 쓰신 코드를 따라 쳐봤지만 이게 무슨 의미를 가지는 것인지 잘 이해가 안갑니다... 바이너리 파일 입출력을 사용하는 경우 read_books 함수의 사용처가 뭔가요?
CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op
"hist - shared.cu"의 다음 부분에서 질문있습니다. if(threadIdx.x < HIST_SIZE) { atomicAdd(&(hist[threadIdx.x]), s_hist[threadIdx.x]); } threadIdx.x는 0~31로 모두 다르기 때문에 병렬 연산이긴 해도, global memory에 있는 hist 배열의 서로 다른부분으로 write가 이루어진다고 생각했습니다. 따라서 서로 겹치는 위치가 없어서 atomic한 연산이 필요없을거라 생각했는데, atomic 연산이 없으면 결과가 이상하게 나오더라구요.. 혹시 왜 그런지 알 수 있을까요? 양질의 강의 제공해주셔서 감사합니다!
수업관련 내용이 아니라 죄송합니다만.. 디버그에서 메모리를 보려하면 이렇게 ?? ?? ?? ?? 만 나와서 메모리를 뜯어볼 수 없어서 너무 답답합니다. 혹시 이를 해결할 방법을 아시는지 해서 질문 남겨봅니다.. 수업 잘 듣고 있습니다. 감사합니다.. 위는 제 코드인데 변수 xds의 주소로 접근하면 아래처럼 나옵니다 다른 상황에서도 이래서 변수로 접근하는 것이 어렵습니다..