source

음, 당신은 PRIU64가 누군가요?

goodcode 2022. 7. 17. 00:27
반응형

음, 당신은 PRIU64가 누군가요?

C는 처음이고, 다음과 같은 상황에 직면해 있습니다.

#include <stdio.h>
#include <inttypes.h>

int main(void)
{
    uint64_t foo = 10;
    printf("foo is equal to %" PRIu64 "!\n", foo);

    return 0;
}

그리고 효과가 있다!왜 그런지 이해가 안 돼요?누가 나 좀 도와줄래?정말 고마워! torr.

PRIu64 인쇄용으로 C99에서 도입된 형식 지정자입니다.uint64_t,어디에uint64_t(링크된 참조 페이지에서):

각각 너비가 ... 64비트인 부호 없는 정수형(실장이 해당 유형을 직접 지원하는 경우에만 제공)

PRIu64는 문자열(예:

printf("%s\n", PRIu64);

인쇄하다llu내 기계로.인접한 문자열 리터럴은 C99 표준의 섹션 6.4.5 문자열 리터럴에서 연결된다.

번역 단계 6에서는, 인접하는 문자와 와이드 문자열 리터럴 토큰의 어느 시퀀스에 의해서 특정된 멀티 바이트 문자 시퀀스를 1개의 멀티 바이트 문자 시퀀스로 연결한다.토큰 중 하나가 와이드 문자열 리터럴 토큰인 경우 결과 멀티바이트 문자 시퀀스는 와이드 문자열 리터럴로 처리되며, 그렇지 않은 경우 문자열 리터럴로 처리됩니다.

이것은 다음을 의미합니다.

printf("foo is equal to %" PRIu64 "!\n", foo);

(머신의)는 다음과 같습니다.

printf("foo is equal to %llu!\n", foo);

http://ideone.com/jFvKR9 를 참조해 주세요.

포인터 값을 인쇄하는 데도 사용할 수 있습니다.LTP BPF 패치셋의 예:

static uint64_t *val;
...
tst_res(TFAIL, "dst(r7) = %"PRIu64", but should be zero", *val);

인쇄:dst(r7) = 18446744073709551615, but should be zero

주의:tst_res()printf like 함수입니다.

언급URL : https://stackoverflow.com/questions/16859500/mmh-who-are-you-priu64

반응형