C 如何使用GDB设置具有整数值的双变量?

C 如何使用GDB设置具有整数值的双变量?,c,gdb,C,Gdb,我有一个类型为double的变量,我想用一个整数值来设置它 例如: double x; 在GDB中,当我这样做时: set x = 14 p x $1 = 14 //ok, looks right x/xg &x 0x7fffffffec28: 0x402c000000000000 //oh no, this is a double representation and I want integer! 我想要的是x有一个整数值x=0xe,而不是双精度表示,即使变量是双精度的 提前谢谢

我有一个类型为double的变量,我想用一个整数值来设置它

例如:

double x;
在GDB中,当我这样做时:

set x = 14
p x
$1 = 14 //ok, looks right
x/xg &x
0x7fffffffec28: 0x402c000000000000 //oh no, this is a double representation and I want integer!
我想要的是
x
有一个整数值
x=0xe
,而不是双精度表示,即使变量是双精度的


提前谢谢

您可以强制转换内存位置的类型:

p {int}&x=10
$4 = 10
x/xg &x
0x7f2c40 <x>:   0x000000000000000a
p{int}&x=10
$4 = 10
x/xg&x
0x7f2c40:0x000000000000000a

你为什么想要这样的东西?您试图解决的实际问题是什么?我有一条汇编指令,它用整数值/表示法设置一个双精度(浮点寄存器)(我不知道为什么)。问题是,还有另一条指令使用这个值,它也需要一个整数值/表示形式。我想在调试时更改此值,只是为了在更改代码之前查看一些结果听起来您可以使用
memset
,将您想要的任何数据写入
x
的地址:在这种情况下,如何使用带有常量的
memcpy
?我的意思是,
memcpy
strcpy
都需要指针。所以
memcpy(&x,0xe,sizeof(double))
不起作用。谢谢我最初错误地输入了
memcpy
,并将我的评论编辑到
memset
,但现在你有了一个可行的方法,所以没关系。我只想补充一点,在我的例子中,它是
long
而不是
int
,但这只值得一提。谢谢!