매크로에서 의도하지 않은 매개 변수 다중 평가

배피

두 번째 printf의 출력이 왜 50이고 67이 62입니까? 최대 50과 62가 57이 아닌 이유는 무엇입니까?

#define MAX(a,b) ((a)>(b) ? (a): (b))
int incr(){
    static int i =42;
    i += 5;
    return i;
}
int _tmain(int argc, _TCHAR* argv[])
{   
    int x = 50;
    printf("max of %d and %d is %d\n",x, incr(), MAX(x, incr()));
    printf("max of %d and %d is %d",x, incr(), MAX(x, incr()));
    return 0;
}
하오 유
printf("max of %d and %d is %d\n",x, incr(), MAX(x, incr()));

매크로 대체 후 다음과 같이됩니다.

printf("max of %d and %d is %d\n",x, incr(), ((x)>(incr()) ? (x): (incr())));
//                                    ^1            ^2               ^3

incr()이 단일 함수 호출에서 여러 번 호출되면 어떤 인수가 먼저 평가되는지는 지정되지 않습니다. 첫 번째 또는 두 번째가 먼저 호출되는지 여부는 예상치 못한 결과를 만듭니다.

확인해야 할 유일한 것은의 단락으로 인한 것입니다 ?:. (x)>(incr()는 표현식에의 값이 (x)있는지 또는 세 번째 값이 incr().

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PDO 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.

분류에서Dev

식 트리-람다 함수 인수에서 식 매개 변수로 매핑되지 않은 매개 변수

분류에서Dev

평가되지 않은 다른 매크로의 평가로 인한 매크로

분류에서Dev

백본 라우터 다중 매개 변수; 두 번째 매개 변수가 정의되지 않았습니다.

분류에서Dev

중복 된 커널 매개 변수의 평가 순서

분류에서Dev

NodeJS Express에서 작동하지 않는 다중 매개 변수

분류에서Dev

매개 변수가있는 각도 '지연'라우팅은 로컬에서 작동하지만 프로덕션에서는 작동하지 않습니다.

분류에서Dev

매개 변수가있는 쿼리에 제공되지 않은 매개 변수가 필요합니다 .C # SQL

분류에서Dev

BayesSearchCV가 SGDClassifier 매개 변수 조정 중에 작동하지 않습니다.

분류에서Dev

Python에서 매개 변수가 올바르지 않습니다.

분류에서Dev

변수 / 매개 변수가 정의되지 않았습니다.

분류에서Dev

내 지시문 링크 함수에서 컨트롤러 매개 변수가 정의되지 않았습니다.

분류에서Dev

# 매크로 매개 변수가 뒤 따르지 않음

분류에서Dev

명명 된 매개 변수에서 분할되지 않는 Dapper 다중 매핑

분류에서Dev

매크로 매개 변수가 허용 된 매개 변수 중 하나인지 확인 하시겠습니까?

분류에서Dev

PDO => 'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다'메시지가있는 'PDOException'

분류에서Dev

web.py 다중 매개 변수 쿼리가 작동하지 않음

분류에서Dev

GridSearchCV는 내가 제공하는 모든 매개 변수를 평가하지 않는 것 같습니다.

분류에서Dev

변수가 정의되지 않은 함수에 매개 변수를 전달할 수 없습니다. Angular 11

분류에서Dev

함수 매개 변수가 angularjs에서 정의되지 않았습니다.

분류에서Dev

중첩 된 TabNavigator가 매개 변수를 경로에 전달하지 않음

분류에서Dev

또 다른 'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.'

분류에서Dev

각도 클릭 함수 매개 변수가 작동하지 않습니다.

분류에서Dev

SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.

분류에서Dev

SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다. Php PDO

분류에서Dev

'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.'

분류에서Dev

람다를 템플릿 매개 변수로 전달합니까? (C ++ 20, 평가되지 않은 컨텍스트의 람다)

분류에서Dev

Ajax 호출 매개 변수가 @Model을 매개 변수 값으로 허용하지 않습니다.

분류에서Dev

두 개의 매개 변수가있는 Rails 쿼리가 프로덕션에서 작동하지 않습니다. 연산자가 존재하지 않습니다.

Related 관련 기사

  1. 1

    PDO 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.

  2. 2

    식 트리-람다 함수 인수에서 식 매개 변수로 매핑되지 않은 매개 변수

  3. 3

    평가되지 않은 다른 매크로의 평가로 인한 매크로

  4. 4

    백본 라우터 다중 매개 변수; 두 번째 매개 변수가 정의되지 않았습니다.

  5. 5

    중복 된 커널 매개 변수의 평가 순서

  6. 6

    NodeJS Express에서 작동하지 않는 다중 매개 변수

  7. 7

    매개 변수가있는 각도 '지연'라우팅은 로컬에서 작동하지만 프로덕션에서는 작동하지 않습니다.

  8. 8

    매개 변수가있는 쿼리에 제공되지 않은 매개 변수가 필요합니다 .C # SQL

  9. 9

    BayesSearchCV가 SGDClassifier 매개 변수 조정 중에 작동하지 않습니다.

  10. 10

    Python에서 매개 변수가 올바르지 않습니다.

  11. 11

    변수 / 매개 변수가 정의되지 않았습니다.

  12. 12

    내 지시문 링크 함수에서 컨트롤러 매개 변수가 정의되지 않았습니다.

  13. 13

    # 매크로 매개 변수가 뒤 따르지 않음

  14. 14

    명명 된 매개 변수에서 분할되지 않는 Dapper 다중 매핑

  15. 15

    매크로 매개 변수가 허용 된 매개 변수 중 하나인지 확인 하시겠습니까?

  16. 16

    PDO => 'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다'메시지가있는 'PDOException'

  17. 17

    web.py 다중 매개 변수 쿼리가 작동하지 않음

  18. 18

    GridSearchCV는 내가 제공하는 모든 매개 변수를 평가하지 않는 것 같습니다.

  19. 19

    변수가 정의되지 않은 함수에 매개 변수를 전달할 수 없습니다. Angular 11

  20. 20

    함수 매개 변수가 angularjs에서 정의되지 않았습니다.

  21. 21

    중첩 된 TabNavigator가 매개 변수를 경로에 전달하지 않음

  22. 22

    또 다른 'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.'

  23. 23

    각도 클릭 함수 매개 변수가 작동하지 않습니다.

  24. 24

    SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.

  25. 25

    SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다. Php PDO

  26. 26

    'SQLSTATE [HY093] : 유효하지 않은 매개 변수 번호 : 매개 변수가 정의되지 않았습니다.'

  27. 27

    람다를 템플릿 매개 변수로 전달합니까? (C ++ 20, 평가되지 않은 컨텍스트의 람다)

  28. 28

    Ajax 호출 매개 변수가 @Model을 매개 변수 값으로 허용하지 않습니다.

  29. 29

    두 개의 매개 변수가있는 Rails 쿼리가 프로덕션에서 작동하지 않습니다. 연산자가 존재하지 않습니다.

뜨겁다태그

보관