第一个参数的类型int64_t
void print_line(int64_t number, char *string)
另一方面,转换说明符%d
用于输出类型的数字int
。所以由于这个原因,这个电话
printf("%d %s \n", number, *string);
已经不正确并调用未定义的行为,因为类型的对象使用了错误的转换说明符int64_t
。
如果函数的第一个参数具有类型,或者在最后一种情况下,如果类型的值可以在 type中表示,则可以%d
在调用中使用转换说明符。printf
int
unsigned int
unsigned int
int
此外,当您传递具有 type的表达式时,转换说明符%s
需要一个类型的指针。char *
*string
char
您需要的是包含标题<inttypes.h>
#include <inttypes.h>
并改变printf
喜欢的叫法
printf( "%" PRId64 " %s\n", number, string );
这是一个演示程序。
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
void print_line( int64_t number, const char *string )
{
printf( "%" PRId64 " %s\n", number, string );
}
int main(void)
{
print_line( 42, "Hello World!" );
return 0;
}
程序输出为
42 Hello World!