我正在使用tricore v3.4.6編譯器。如何使用gcc編譯器tricore v3.4.6在C中打印sint32?
假設我有一個有符號整數,如sint32 a = -1
,並且想用printf
打印。
我試圖printf("Signed number %i", a)
以及printf("Signed number %d", a)
這既給了我編譯器的警告,例如
警告:INT格式,SINT32 ARG
我正在使用tricore v3.4.6編譯器。如何使用gcc編譯器tricore v3.4.6在C中打印sint32?
假設我有一個有符號整數,如sint32 a = -1
,並且想用printf
打印。
我試圖printf("Signed number %i", a)
以及printf("Signed number %d", a)
這既給了我編譯器的警告,例如
警告:INT格式,SINT32 ARG
不像在評論這個問題的建議,sint32
是不是在安全少見關鍵和嵌入式系統,並且通常會回退到int
的類型轉換。 (例如在某些MISRA環境中)。
因此
sint32 a = -1;
printf("%d", a);
應該反正做的伎倆。使用gcc v5.2.1和arm-gcc v5.2.1進行測試(-Wall和no warnings)。
如果它仍然給你一個警告揣摩什麼sint32
真正映射到,並嘗試long
-print:printf("%ld")
。但是,再仔細檢查一下sint32
的字節長度是否真的是32bits? (和一些系統甚至可以具有比32位體系結構以下)
正如上面評論中提到的那樣,yes printf(「%ld」)對我沒有任何警告。 – floquet22
爲了printf()
任何符號整數缺少像"l"
,"ll"
,"h"
等一個定義匹配前綴,簡單地轉換爲最寬的已知類型。
#include <stdint.h>
sint32 a = -1;
printf("Signed number %jd", (intmax_t) a);
// or lacking intmax_t
sint32 a = -1;
printf("Signed number %lld", (long long) a);
什麼是'sint32'類型? –
* * sint32'是什麼?一個'typedef'?一個'#define'?它從何而來? – EOF
只是一個盲目的猜測,嘗試用'PRId32' .. –