[英]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.