c - 将 int 传递给接受 int64 作为输入参数的函数

标签 c

我有一个函数,它接受指向 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/

相关文章:

C 重定位 0 具有无效的符号索引

c - scanf() 格式字符串中尾随空格的影响是什么?

c++ - 链接库的多个版本

c 删除新行字符帮助

c - 在 C 中读取用户输入的可变长度字符串

c - scanf 不存储我的总和

c - C语言中的原子类型是什么?

c - 如果 "argstr"是 C 中的二维数组,那么 argstr = argstr[0] 怎么办?为什么值(value)观不一样?

c - strcat() 的访问冲突

c - 扫描 char 并将 Switch 语句与 If 语句组合?开关(时间)