티스토리 뷰

1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(void){
    long id;
    long exist_id = "";
    scanf("%s", &id);
    printf("%s??!", id);
}
cs

처음에 이게 왜 컴파일이 되지 않을까 생각했다.

1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(void){
    long id[50];
    long exist_id = "";
    scanf("%s", id);
    printf("%s??!", id);
}
cs

 

단순히 문자열은 배열이라는 것과 배열은 포인터라는 것을 금세 까먹었다.

/********************************문자열은 배열이고 포인터이다.*******************************/

1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main(void){
    
    int A, B, C;
    scanf("%d %d %d"&A, &B, &C);
    printf("%d\n%d\n%d\n%d\n", ((A+B)%C), (((A%C) + (B%C))%C), ((A×B)%C), (((A%C) × (B%C))%C));
    
}
cs

처음에 이렇게 적었는데 아직도 내 마음대로 하려고 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
 
int main(void){
    
    int A, B, C;
    scanf("%d %d %d"&A, &B, &C);
    int 1st, 2nd, 3rd, 4th;
    1st = (A+B)%C;
    2nd = ((A%C) + (B%C))%C;
    3rd = (A×B)%C;
    4th = ((A%C) × (B%C))%C;
    printf("%d\n%d\n%d\n%d\n", 1st, 2nd, 3rd, 4th);
    
}
cs

시도는 좋았으나... 변수명을 숫자로 시작하는 실수를 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
 
int main(void){
    
    int A, B, C;
    scanf("%d %d %d"&A, &B, &C);
    int fir, sec, thr, forth;
    fir = (A+B)%C;
    sec = ((A%C) + (B%C))%C;
    thr = (A×B)%C;
    forth = ((A%C) × (B%C))%C;
    printf("%d\n%d\n%d\n%d\n", fir, sec, thr, forth);
    
}
cs

다시 바꿨지만 여기서 또 변수명을 for로 해버렸다... 집중할 필요가 있다.

그러다가 처음보는 컴파일 에러였다.

바로 구글링을 했고 말그대로 non - ASCII character를 사용하면 안 된다는 것이다. E.g.) 기울어진 큰 따옴표처럼...

그렇지만 뭐지 싶다가 발견했다.. 곱하기는 *라는 것을...

holy shit.. 그래도 역시 재밌었다.

 

그냥 내가 궁금해서 찾아본 것)

 

C 소스 코드를 왜 space가 아니라 underbar를 사용할까.

E.g.) source code name -> "C program.c"이라면 C program.c만 사용하면 C와 progam.c로 인식하기 때문이라고 한다.

따라서 사용하려면 underbar를 사용하거나 C_program.c or "C program.c"를 이용해 호출하도록 하자.

근데 그냥 underbar가 편할 듯 하다.

댓글