|
쉼표 통신수
변하기 쉬운 선언, 기능 논쟁, 등등을 분리하기 위하여 쉼표는 C에서 빈번하게 간단한 구두점, 이용된다. 특정 상황에서는, 쉼표는 통신수로 작동한다.
당신은 쉼표를 가진 2개의 이하 표정을 분리해서 표정을 형성할 수 있다. 결과는 다음과 같이 이다:
- 두 표정 다 좌 표정이, 첫째로 평가된 상태에서 평가된다.
- 전체 표정은 적당한 표정의 가치에 평가한다.
예를 들면, 뒤에 오는 계산서는 b에서 x의 가치를 지정하고, 그 후에 a를 증가하고, 그 후에 b를 증가한다:
x = (a++, b++);
C 통신수 앞서기 (C 통신수의 개요)
계급과 Associativity |
통신수 |
1 (오른쪽으로 떠나) |
() [] -> . |
2 (좌측에 맞은) |
! ~ ++ -- * (에두름) & (연설하 의) (유형)
sizeof + (단일체) - (단일체) |
3 (오른쪽으로 떠나) |
* (곱셈)/% |
4 (오른쪽으로 떠나) |
+ - |
5 (오른쪽으로 떠나) |
<< >> |
6 (오른쪽으로 떠나) |
< <= > >= |
7 (오른쪽으로 떠나) |
= = != |
8 (오른쪽으로 떠나) |
& (비트 단위로와) |
9개 (오른쪽으로 떠나) |
^ |
10 (오른쪽으로 떠나) |
| |
11 (오른쪽으로 떠나) |
&& |
12 (오른쪽으로 떠나) |
|| |
13 (좌측에 맞은) |
?: |
14 (좌측에 맞은) |
= += - = *=/= %= &= ^= |= <<= >>= |
15 (오른쪽으로 떠나) |
, |
() 기능 통신수는 이다; [] 배열 통신수는 이다. |
|
저희가 통신수의 사용례를 가지고 가게 하십시오:
/* Use Of Operators */
int main()
{
int x = 0, y = 2, z = 1025;
float a = 0.0, b = 3.14159, c = -37.234;
/* incrementing */
x = x + 1; /* This increments x */
x++; /* This increments x */
++x; /* This increments x */
z = y++; /* z = 2, y = 3 */
z = ++y; /* z = 4, y = 4 */
/* decrementing */
y = y - 1; /* This decrements y */
y--; /* This decrements y */
--y; /* This decrements y */
y = 3;
z = y--; /* z = 3, y = 2 */
z = --y; /* z = 1, y = 1 */
/* arithmetic op */
a = a + 12; /* This adds 12 to a */
a += 12; /* This adds 12 more to a */
a *= 3.2; /* This multiplies a by 3.2 */
a -= b; /* This subtracts b from a */
a /= 10.0; /* This divides a by 10.0 */
/* conditional expression */
a = (b >= 3.0 ? 2.0 : 10.5 ); /* This expression */
if (b >= 3.0) /* And this expression */
a = 2.0; /* are identical, both */
else /* will cause the same */
a = 10.5; /* result. */
c = (a > b ? a : b); /* c will have the max of a or b */
c = (a > b ? b : a); /* c will have the min of a or b */
printf("x=%d, y=%d, z= %d\n", x, y, z);
printf("a=%f, b=%f, c= %f", a, b, c);
return 0;
}
그리고 이 프로그램의 결과는 스크린에 것과 같이 표시될 것이다:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|
|