C++ 将Z3整数表达式强制转换为C/C++;int

C++ 将Z3整数表达式强制转换为C/C++;int,c++,api,model,z3,C++,Api,Model,Z3,我是Z3新手,在这里和谷歌上搜索我问题的答案。不幸的是,我没有成功 我正在使用Z34.0C/C++API。我声明了一个未定义的函数d:(Int)Int,添加了一些断言,并计算了一个模型。到目前为止,效果不错 现在,我想提取由模型定义的函数d的某些值,比如d(0,0)。下面的语句可以工作,但返回一个表达式,而不是函数值,即d(0,0)的整数 支票 result.is_int(); 返回true 我(希望不是太愚蠢)的问题是如何将返回的表达式转换为C/C++int 非常感谢你的帮助。谢谢大家! 就

我是Z3新手,在这里和谷歌上搜索我问题的答案。不幸的是,我没有成功

我正在使用Z34.0C/C++API。我声明了一个未定义的函数d:(Int)Int,添加了一些断言,并计算了一个模型。到目前为止,效果不错

现在,我想提取由模型定义的函数d的某些值,比如d(0,0)。下面的语句可以工作,但返回一个表达式,而不是函数值,即d(0,0)的整数

支票

result.is_int();
返回true

我(希望不是太愚蠢)的问题是如何将返回的表达式转换为C/C++int

非常感谢你的帮助。谢谢大家!

就是你要找的

以下是文件摘要的摘录:


不过你应该小心。Z3的整数是数学整数,很容易超过32位整数的范围。从这个意义上说,使用字符串并将其解析为大整数是一个更好的选择。

+1对于编写良好的第一个问题,您不会经常看到!很遗憾我帮不了你…非常感谢!这正是我想要的。回答得非常快;-)
result.is_int();
Z3_bool Z3_get_numeral_int(__in Z3_context c, __in Z3_ast v, __out int * i)

Similar to Z3_get_numeral_string, but only succeeds if the value can fit in a 
machine int. Return Z3_TRUE if the call succeeded.