왜 다음 코드가 Lvalue required error를보고합니까 ?? 그리고 우리는 어떻게 배열과 배열의 요소의 수를 인수로 받아들이고 배열의 요소를 출력하는 매크로를 작성할 수 있습니까 ??매크로에 Lvalue 필수 오류가 발생했습니다.
#define arr(b) printf("%d",b++);\
printf("%d",b);
int main()
{
arr(5);
}
왜 다음 코드가 Lvalue required error를보고합니까 ?? 그리고 우리는 어떻게 배열과 배열의 요소의 수를 인수로 받아들이고 배열의 요소를 출력하는 매크로를 작성할 수 있습니까 ??매크로에 Lvalue 필수 오류가 발생했습니다.
#define arr(b) printf("%d",b++);\
printf("%d",b);
int main()
{
arr(5);
}
그 일부가 유효하지 C. b+1
대신 b++
의 사용을 고려 인 5++
으로 확장하기 때문에. 매크로를 확장하면
, 다음 얻을 : 오류를 얻을 수 있도록
int main()
{
printf("%d",5++);
printf("%d",5);
}
당신은 상수 5
를 후행 수 없습니다.
매크로는 기능이 아닙니다. 왼쪽에
void arr(int b) {
printf("%d",b++);
printf("%d",b);
}
+1 "함수를 원하면 함수를 작성하십시오". –
첫 번째 리터 좌변 에서 스탠드 : 당신이 그것을 함수처럼 행동하려면, 단순히 기능을합니다.
왼쪽 값만 할당 할 수 있습니다.
x ++
을 쓸 때는 x = x + 1
을 의미합니다 (또한 값을 얻음). ...
int x = 5;
arr(x);
가 '직장'을하지 않는 것을 무시 안에 모든 괄호로 :
그래서 문제는 의미는 어쩌면5 = 5 + 1
이 작업을 수행하고자 작성하지 않습니다이다 매크로 정의! 'arr (6 * 3)'으로 "호출"되었다고 가정하십시오. ... #define arr (b) printf ("% d", (b) ++); printf ("% d", b); ' – pmg
알았어 .. 알았어 .. 누군가가 질문의 다른 부분에 대답 해 줄 수 있니? – user1232138