쉼표 여기에 무엇을 의미합니까 ","아래 코드 조각에서 재생할 역할이 있습니까? 코드에서 컴파일러 오류가 발생합니까?
int main()
{
int i = 1, 2;
printf("%d", i);
}
및이 법적 오브젝티브 C 또는 C입니까? 감사!
쉼표 여기에 무엇을 의미합니까 ","아래 코드 조각에서 재생할 역할이 있습니까? 코드에서 컴파일러 오류가 발생합니까?
int main()
{
int i = 1, 2;
printf("%d", i);
}
및이 법적 오브젝티브 C 또는 C입니까? 감사!
왜 그냥 컴파일하려고하지 않습니까?
컴파일되지 않습니다. i
두 개의 서로 다른 값 (int i = 1,2
) 또는 수행하려는 작업을 할당 할 수 없습니다. C comma operator은 그렇게 작동하지 않으며 코드의 버그입니다.
an 더 합리적인 할당은 int i = 1, s = 2
그것은 것입니다 ... 당신 놈들 바로 ...가 발생 오류 그래 compiler.but하는 컴파일러 다를 수 있습니다 생각 쉼표 연산자와 함께 놀러 노력했다 엮다. [이 참조] (http://en.wikipedia.org/wiki/Comma_operator) – jonsca
@jonsca : 혼란 스럽습니다.이 컨텍스트에서 쉼표 연산자를 사용할 수 없습니다. 컴파일 해보십시오. http://codepad.org/adLXW5ja –
@jonsca : '오류 : GCC 오류가 발생 내가 할 경우 I = (1,2) ... 난 그게 법적해야 추측 int로 어떤 숫자 constant' – sarnold
코드 같은이 상황에 쉼표가 새로운 변수 정의를 소개합니다 등의 오류가 발생합니다 것, 그리고 2
변수의 유효한 이름이 아닙니다. 콤마 연산자는 식 "스택"으로 사용될 수있는 다른 상황에서
는 마지막 표현식의 값은 전체 식의 값이 될 것이다.
'스택 업'이란 식으로 배열에서 수행되는 것과 같은 의미입니까? 예를 들어 int arr [] = {1 , 2,3,4,5,6} – phoenix
아니요, 예를 들어'for (int i = 0; i <10; ++ i, ++ j) {..}'는 합법적입니다. 둘 다 매 반복마다. 'return (i ++, j);'는 i를 증가시키고 j를 리턴합니다. – Rup
아니요, 어떤 이유로 표현식의 값을 버리려는 경우 쉼표 연산자를 표현식 컨텍스트에 사용합니다. 일반적으로이 표현식은 일종의 부작용을 수행합니다. 예 :'if (x> 10) i = 0, j = 1; 또는'x = (++ y, 20)'. 배열을 초기화 할 때 사용되는 쉼표는 단순히 구분자입니다. – Lindydancer
그래, 그것은 ","운영자는 ... 당신은 코드에서'I = 1, 2' 사용하는 합법적 – phoenix
... 자세한 내용은 운영자 테이블을 참조하려고 노력하지만, 수하지 않습니다되는 법적, 쉼표 나입니다 선언 작업. 어쨌든, 너는 무엇을 하려니? –
@phoenix - 다른 위치의 다른 것들에는 쉼표가 사용됩니다. 함수를 호출 할 때 매개 변수를 분리하는 데 사용됩니다. 정의에서는 여러 변수를 정의 할 수 있습니다. – Lindydancer