๐Ÿ“Certificate/Engineer Information Processing

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ] - [4๊ณผ๋ชฉ] 2023 (02)

Sun A 2024. 1. 31. 09:31

 

[์ œ 4๊ณผ๋ชฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ™œ์šฉ]

- 2023๋…„๋„ 1ํšŒ์ฐจ (02) - C์–ธ์–ด ํ”„๋กœ๊ทธ๋žจ

์‹คํ–‰๊ฒฐ๊ณผ ๋ฌธ์ œ [01]
#include <stdio.h>
int main(void) {
    int n = 4;
    int* pt = NULL;
    pt = &n;
    printf("%d", &n + *pt - *&pt + n);
    return 0;
}

 

โ–ถ {}์˜ ์ฝ”๋“œ๋ฌธ์žฅ ์ฐจ๋ก€๋Œ€๋กœ ํ•ด์„

1. ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ n์„ ์„ ์–ธํ•˜๊ณ  4๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

2. ์ •์ˆ˜ํ˜• ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ pt์— NULL ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. 

→ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ : ์ •์ˆ˜ ํ˜•ํƒœ์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธ. / ์ƒ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค. 

: ์ฃผ์†Œ ์•ˆ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’

3. pt์— n์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

→ & : ์ผ๋ฐ˜ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ณด๋ ค๋ฉด ๋ณ€์ˆ˜๋ช… ์•ž์— &๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.

4. printf("%d", &n + *pt - *&pt + n);

%d : ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ

- &n = n์˜ ์ฃผ์†Œ๋ฅผ ์˜๋ฏธ = pt

- *&pt = ํฌ์ธํ„ฐ pt์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. = &pt 

&n = *&pt

- *pt = 4

- n = 4

== ( 4+4 = 8 )

**

์‹คํ–‰๊ฒฐ๊ณผ ๋ฌธ์ œ [02]
#include <stdio.h>
main() {
  int a = 3, b = 4, c = 5;
  int r1, r2, r3;
  r1 = a < 4 && b <= 4;
  r2 = a > 3 || b <= 5;
  r3 = !c;
  printf("%d", r1 - r2 = r3);
}

 

โ–ถ {}์˜ ์ฝ”๋“œ๋ฌธ์žฅ ์ฐจ๋ก€๋Œ€๋กœ ํ•ด์„

โ€ป ์ฐธ์ด ๋‚˜์˜ค๋ฉด 1์„ ์ถœ๋ ฅ, ๊ฑฐ์ง“์ด ๋‚˜์˜ค๋ฉด 0์„ ์ถœ๋ ฅ

1. ๋ณ€์ˆ˜ a, b, c๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ๊ฐ 3, 4, 5๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

2. ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ r1, r2, r3๋ฅผ ์„ ์–ธํ•œ๋‹ค.

3. r1 = a < 4 && b <= 4;

→ &&(and) : ๋‘˜ ๋ชจ๋‘ ์ฐธ

: ์•ž, ๋’ค ์กฐ๊ฑด์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜๋ฏ€๋กœ ์ฐธ(1)์„ ์ถœ๋ ฅํ•œ๋‹ค.

4. r2 = a > 3 || b <=5

→ ||(or) : ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ  ์ฐธ

: ์ „์ž๋Š” ๊ฑฐ์ง“์ด์ง€๋งŒ ํ›„์ž๊ฐ€ ์ฐธ์ด๋ฏ€๋กœ ํ•ด๋‹น ๊ฐ’์€ ์ฐธ(1)์„ ์ถœ๋ ฅํ•œ๋‹ค.

5. c์˜ ๊ฐ’ 5๋Š” ์ฐธ์ด๋ฏ€๋กœ not์„ ๋ถ™์ด๋ฉด ๊ฑฐ์ง“์ด ๋œ๋‹ค. (0)์ถœ๋ ฅ 

→ ! : ๋…ผ๋ฆฌ NOT์„ ์˜๋ฏธ / ์ฐธ์ด๋ฉด ๊ฑฐ์ง“์„, ๊ฑฐ์ง“์ด๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž

  ๋…ผ๋ฆฌ๊ฐ’ : ์ •์ˆ˜๋กœ ๋…ผ๋ฆฌ๊ฐ’์„ ํŒ๋ณ„ํ•˜๋ฉด 0์€ ๊ฑฐ์ง“, 0 ์ด์™ธ์˜ ์ˆ˜๋Š” ์ฐธ์œผ๋กœ ๊ฒฐ์ •

 

=> 1 - 1 - 0 = 0

 

๊ธฐํ˜ธ์˜ ์˜๋ฏธ [01]

โ–ถ ๋™์ผํ•œ ์˜๋ฏธ์˜ ๊ธฐํ˜ธ ์ฐพ๊ธฐ

!a && !b

= !a์™€ !b๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด์–ด์•ผ ํ•จ

= ! (a์™€ b ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ์ด์–ด์•ผ ํ•จ) - ๋ฐ˜๋Œ“๊ฐ’

= !(a || b)

 

์‹คํ–‰๊ฒฐ๊ณผ ๋ฌธ์ œ [03]
#include <stdio.h>
struct st {
   int a;
   int c[10];
};
int main(int argc, char* argv[ ]) {
    int i = 0;
    struct st ob1;
    struct st ob2;
    ob1.a = 0;
    ob2.a = 0;
    for (i = 0; i < 10; i++) {
       ob1.c[i] = i;
       ob2.c[i] = ob1.c[i] + i;
    }
    for (i = 0; i < 10; i = i + 2) {
       ob1.a = ob1.a + ob1.c[i];
       ob2.a = ob2.a + ob2.c[i];
    }
    printf("%d", ob1.a + ob2.a);
    return 0;
}

โ–ถ ๋ฌธ์ œ ํ’€์ด : ๋‚˜๋จธ์ง€๋Š” ์ง์ ‘ ์†์œผ๋กœ ํ’€์–ด๋ณด๊ธฐ

1.  struct st {}

- int a : ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ a๋ฅผ ์„ ์–ธํ•œ๋‹ค.

- int c[10] : 10๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ–๋Š” ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด c๋ฅผ ์„ ์–ธํ•œ๋‹ค.