높은 수준의 OOP 언어 인 C#과 Java에서 최근 C에서 머리를 긁기 시작했습니다. 나는 C가 약간 이상하다고 생각합니다. 심지어 OOP 언어 그러나 아래이 쉼표 사용은 표현식에서 작동하지만 선언에서 실패하는 이유는 무엇입니까?
int i=0,1,2;
/*
Error : expected identifier or ‘(’ before numeric constant
int i = 0, 1, 2;
^
*/
을에 잘못된 구문처럼 보이는 놀라운 작품
는다음 오류를 제공하고 직관적 인 것 같습니다 : 그래서 아래 명확히 할
int i;
i = 0,1,2; //works
가 왜 동작입니다 ? 그러한 행동이나 파싱 전문성을 지키기위한 그들의 중요성은 무엇입니까? 동등
@ Mahesha999 실제로 _bigger_ 질문 일 것입니다 : 왜 지구상에 그런 것을 써야합니까? 문법에는 _ "declaration \ declaration-specifiers; \ declaration-specifiers init-declarator-list;"_ 그게 전부입니다. 그런 코드를 작성하는 것이 직관적이라고 생각합니까 (쉼표 연산자에 _intuitive_가 있으면)? –
@DebasishJana이 답변은 다른 누구도 얻지 못했던 것으로 설명하면서 선언문이 작동하지 않는 이유를 설명하지 않습니다. –
@AdrianoRepetti 표현식과 선언에서','사이의 구별이 여기에있는 답안에서 분실 된 것 같습니다. 그것이 질문의 흥미로운 부분입니다. –