如何使用gcc编译器tricore v3.4.6在C中打印sint32?
我正在使用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' .. –