簡體   English   中英

Printf C 中的十進制無符號十六進制

[英]Printf unsigned hexadecimal from decimal in C

所以這周剛開始學習C,目前正在練習基本功能。 有一個問題要求我以十六進制打印出 long int,但我得到的打印輸出與示例答案不同。 這是我寫的代碼。 多謝了。

typedef struct database{
    long int organization;
} database;

int main() {
    struct database database = {-481};
    printf("%x", database.organization);
    return 0;
}

預期結果:ffffffffffffe1f

收到的結果:fffffe1f

long int是不可移植的,可以有不同的大小。 而是使用stdint.h中的可移植類型,在printf的情況下使用inttypes.h打印它們:

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

typedef struct database{
    uint64_t organization;
} database;

int main() {
    struct database database = {-481};
    printf("%"PRIX64, database.organization);
    return 0;
}

謝謝大家的幫助。 添加更多編譯器警告幫助我了解 function 參數不匹配並將“%x”掛到“%lx”修復它。

typedef struct database{
    long int organization;
} database;

int main() {
    struct database database = {-481};
    printf("%lx", database.organization);
    return 0;
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM