2011-12-13 3 views

답변

5

미안 해요를 얻는 방법을 설명하기위한 모든 덕분에 잘못된 예를했다.

23은 선언 이름이어야합니다. cd처럼

쉼표 연산자를 사용하려면 1, 2, 3을 괄호로 묶어야합니다.

나는이 사고를 용서하고 설명을 계속합니다.

operand1 , operand2으로 사용되는 쉼표 연산자를 사용하면 operand2의 값 (또는 왼쪽 값)이 표시됩니다. 따라서 b6으로 초기화합니다 (쉼표 연산자가 연관성을 유지하므로 (4, 5), 6과 같이).

+1

"나는 너에게이 사고를 용서하겠다."친구 야. –

+0

@ TamásSzelei : 그 사람은 그것을 할 수있다 : D – Griwes

+0

@Tam 나는 왜 너를 불쾌하게하는지 모른다. 나는 그 라인에서 아무런 의미를 없애려고 노력하지 않았을 수도있다. 용감한자인 Benjamin과 함께하셔야하며 그 코드에서 또 다른 가능한 의미를 추측 할 수 있습니다. –

6

코드가 유효하지 않지만 선언에서 별도의 줄로 할당을 이동하면 해당 코드는 유효하며 다음과 같이 동작이 설명됩니다. 쉼표 연산자는 우선 순위가 가장 낮으며 할당이 짝수가 아닙니다. 그래서이 라인 :

a = 1,2,3; 

은 다음과 같이 해석됩니다 :이 읽은대로이 줄을 정확하게 해석 될 수 있지만

(a = 1),2,3; 

:

b = (4,5,6); 

쉼표 연산자는 그것의 결과를 폐기 남아 피연산자이므로 다음과 같이 단순화 할 수 있습니다.

b = 6; 
0

왜이 작업을 수행하려고합니까? 너는 무엇을 목표로하고 있니? 변수 a는 한 번에 하나의 값만 가질 수 있으며 배열과 같은 정렬을 할당하려고합니다. 당신도 원하는처럼 추가 기운 다,

int[] a = {1,2,3};  
int[] b = {4,5,6}; 

을하지만 :

이 작업을 할 수 있습니다. 두 배열을 반복하여 추가해야합니다.

for (int i = 0; i < 3; i++) 
{ 
    std::cout << a[i] + b[i]; 
} 
+0

당신은 [쉼표 연산자] (http://en.wikipedia.org/wiki/Comma_operator)를 알지 못합니까? 아니면 그가 실제로 배열을 만들려고한다는 것을 암시하고 계십니까? (당신이 잘못 될 것이라고 말하는 것은 아닙니다, 그것은 완벽하게 유효한 해석입니다) –

+0

예, 그것이 제 가정입니다. 이와 같이 쉼표 연산자를 사용하는 것은 실제 목적이 없기 때문입니다. – bungiman

0

콤마 연산자 순서대로 왼쪽에서 오른쪽 (이 시퀀스 지점을 정의) 평가하고, 그 값은 가장 오른쪽 피연산자이다. 이 b = (4,5,6);

=의 우선 순위가 너무 이상 , 인 경우를 설명하면 :

전체 식의 값이 3
(a = 1), 2, 3; 

이지만은 :

a = 1,2,3 

동등 1이 지정되었습니다.

int a = 1, 2, 3; 

가 잘못되었습니다

(오퍼레이터 등) 쉼표의 사용은 어떤 말을하는 이유 인 선언 목록에서 다르다. 나는 솔직히 자신을 확신하지 못하지만 모호함은 훌륭한 스타일이 아닙니다. 쉼표 모두 다른 용도는 다음과 같습니다

int a = 1, b = 2, c = 3; // declaration list 

과 :

int a; 
a = 1, 2, 3; // a is assigned 3 

너의 사이 어딘가에있다.

관련 문제