쉼표 연산자
답변
C에서 쉼표를 모두 사용하는 것이 쉼표 연산자의 인스턴스가 아니라는 점을 한 가지 깨달으십시오. 두 번째 예를 변경하면 구문 적으로 선언 할 :
int a0=1,a1=2,a2=3;
쉼표가 운영되지 않습니다, 그들은 단지 목록에 선언자의 인스턴스를 분리하는 데 필요한 구문 있습니다.
또한 매개 변수/인수 목록에 사용 된 쉼표는 쉼표 연산자가 아닙니다.
제 생각에는 쉼표 연산자는 거의 항상 나쁜 생각입니다. 단지 불필요한 혼란을 야기합니다. 대부분의 경우 쉼표 연산자를 사용하여 수행되는 작업은 별도의 명령문을 사용하여보다 명확하게 수행 할 수 있습니다.
쉽게 이해할 수있는 두 가지 예외는 for
문안의 제어 절 내부에 있고 두 개 이상의 'thing'을 하나의 표현식에 반드시 밀어 넣어야하는 매크로에 있으며 두 번째 예외가있을 때만 수행해야합니다 다른 적절한 옵션).
여기에 구분 기호로 사용하는 경우에도 3 자리 배열을 선언하고 나에 따라 왼쪽에서 오른쪽으로 값을 할당해야합니다. –
@fahad : 쉼표가 연산자가 아닌 경우에도 링크 된 페이지에 , "쉼표는 함수 인수 목록과 같은 일부 컨텍스트에서 구분 기호로 사용할 수 있습니다. 분리 기호로 쉼표를 사용하여 운영자로 혼동하지 마십시오. 두 가지 용도는 완전히 다릅니다." –
오 죄송합니다. 당신이 내 사이에 잡았 주석 :) –
표현식이 나타날 수있는 곳이면 어디에서나 쉼표 연산자를 사용할 수 있습니다. 몇 가지 예외가 있습니다. 특히 쉼표 연산자는 상수 표현식에서 사용할 수 없습니다.
또한, 쉼표는 구분 기호로 사용되는 쉼표 연산자를 사용하여 함수를 호출 할 때, 예를 들어, 당신이 그룹에 쉼표 표현 괄호를 사용해야 할 때 조심해야:
void f(int, bool);
f(42, 32, true); // wrong
f((42, 32), true); // right (if such a thing can be considered "right")
귀하의 예를 선언입니다 :
int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
선언에서, 당신은, 그래서 여기에 쉼표로 구분하여 여러 가지를 선언 할 수도 쉼표는 구분 기호로 사용됩니다. 또한, 이와 같은 선언의 끝 부분에 표현식을 붙일 수는 없습니다. (int arr[3] = { 1, 2, 3 };
을 사용하여 원하는 결과를 얻을 수 있습니다.
아마 괄호 연산자는 _expression_이 예상되는 곳에서 사용될 수 있지만, 많은 경우 사람들이 표현식을 사용한다고 자주 생각할 때 _assignment-expression_ 만 허용됩니다. 예 : 함수 인자, 초기화 자. –
- 1. 쉼표 연산자 남용
- 2. 자바 스크립트 쉼표 연산자
- 3. C 쉼표 연산자
- 4. 자바 스크립트 함수 : 쉼표 뒤에 쉼표
- 5. 불필요한 쉼표
- 6. C++에서 연산자 오버로딩
- 7. jquery의 연산자 : not 연산자
- 8. for 루프 용 쉼표
- 9. 루비 루프에서 쉼표 분리?
- 10. Excel의 일관된 쉼표 CSV
- 11. 통합 : SQL 패스 쉼표
- 12. rdlc의 문자열에서 쉼표 제거
- 13. CSV 파일의 쉼표 바꾸기
- 14. 아포스트로피로 쉼표로 구분되는 쉼표
- 15. PHP : 텍스트를 쉼표
- 16. 수동 탈출 쉼표
- 17. 배열의 나머지 쉼표
- 18. 자바 스크립트 제한 쉼표
- 19. 쉼표 내가 열이 MySQL을
- 20. 모달 팝업의 쉼표 문제
- 21. 자바 스크립트 쉼표 구문
- 22. CSS 쉼표 사용
- 23. Javascript if 문의 쉼표?
- 24. 하지만 무시 쉼표
- 25. 연산자 ==
- 26. 왜 오버로드 된 쉼표 연산자가 호출되지 않습니까?
- 27. C++ 연산자 + 및 연산자 + = 오버로드
- 28. 업데이트 문장과 함께 쉼표 사용
- 29. PHP 정규식 question..adding 쉼표
- 30. C++ 매크로 문제 (쉼표 해석)
또한 재미있는 질문은 쉼표 연산자로 할 수있는 일입니다. 쉼표 연산자를 오버로딩하는 것은 표현식 유형이 무효인지 여부, 즉 컴파일 타임에 테스트하는 데 적합한 도구입니다. 'foo'는 사용자가 정의한 타입이고' foo (& operator, (T, foo)) [2]; 템플릿이 있습니다. . "T = void"와 함께 사용하면 기본 쉼표 연산자가 사용됩니다. –