영어로 읽는 코딩

20 [C] 대입(할당) 연산자와 표현식 (복합 대입 연산자)

Assignment Operators and Expressions (대입(할당) 연산자와 표현식)

Expressions such as

i = i + 2

in which the variable on the left hand side is repeated immediately on the right, can be written in the compressed form

i += 2

The operator += is called an assignment operator.

Most binary operators (operators like + that have a left and right operand) have a corresponding assignment operator op=, where op is one of

+      -      *     /      %      <<      >>      &

If expr 1 and expr 2 are expressions, then

expr 1 op = expr 2

is equivalent to

expr1 = (expr1) op (expr2)

except that expr1 is computed only once. Notice the parentheses around expr2:

x *= y + 1

means

x = x * (y + 1)

rather than

x = x * y + 1

As an example, the function bitcount counts the number of 1-bits in its integer argument.

```
#include <stdio.h>

/* count 1 bites in x */

int bitcount(unsigned int);

int main(void)

{

unsigned int src = 14;

printf("%d \n %s", bitcount(src), "t");

return 0;

}

bitcount(unsigned int x) {

int b;

/*  for (b = 0; x != 0; x >>= 1){

if (x & 01) {

b++;

}

}

*/

for (b = 0; x != 0; x &= (x-1)) {

b++;

}

return  b;

} [원본에서 출력 프로그램 만들었음]```

Declaring the argument x to be unsigned ensures that when it is right-shifted, vacated bits will be filled with zeros, not sign bits, regardless of the machine the program is run on.

[The C Programming Language p.50]

댓글 댓글 본문
작성자
비밀번호
버전 관리
 2018-07-31 12:06:43 Yoo Moon Il
현재 버전 2018-07-31 12:06:43 graphittie 자세히 보기
• 토픽 0
• 모듈 0
• 코스 0
• 봤어요 0
• 댓글 0
• 명예의 전당 0