我有一个函数,它接受指向 int64 的指针并打印该值。现在,如果我从调用函数传递一个整数,它会给出原始值加上额外的 4 个字节,因为它是一个 int64 并且正在传递整数。我该如何处理这个问题,以便如果我将一个整数传递给接受 int64 的函数,仍然会打印一个整数值。
void foo(int64_t * temp) // just mentioning a simplified function
{
printf("%llx\n",*temp);
}
如果我尝试传递值为“0x12345678”的整数,则 foo 函数打印出的值为“xxxxxxxx12345678”,其中 xxx 是垃圾值。
更新: 我可以通过使用临时 int64 变量/指针并传递它来做到这一点,但我不这样做或者不能这样做,还有其他方法吗?
最佳答案
如果你通过类型转换来伪造编译器,那么所有的赌注都会失败。未定义的行为和所有那些爵士乐。要修复它,请创建一个适当的变量并用它调用您的函数:
int32_t x = 0x12345678;
int64_t y = x;
foo(&y);
编辑:您说您“不或者不能”进行此更改,但如果您希望它起作用,则必须这样做。
关于c - 将 int 传递给接受 int64 作为输入参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618717/