【发布时间】:2013-08-30 12:31:38
【问题描述】:
我是序言的新手。我了解到,虽然它是一种声明性语言,但 prolog 可以用作通用编程语言,就像 C 一样。所以,无论你可以在 C 中解决什么问题,你也可以在 prolog 中解决,即使它运行 -时间可能没有那么好。由于 prolog 中没有指针(据我所知),我想知道是否可以在 prolog 中为以下用 C 编写的代码编写等效程序:-
#include <stdio.h>
int main()
{
int a = 5;
int *p;
p = &a;
printf("The address of a is %d.", p);
return 0;
}
【问题讨论】:
-
不知道序言,但由于显示的代码在
c中,所以想通知说明符%d不适合指针。您应该使用%p或%u。 -
您从哪里得知 Prolog 可以“像 C 一样”使用?
-
感谢 Dayal rai 提供的信息
-
@Dayalrai
%u,期望unsigned int,与%d,期望int一样不正确。%p更好,但在技术上不正确,因为它需要void*。正确的成语是printf("%p", (void*)p)。详细信息在 C99 标准的第 6.5.2.2 条中(默认参数提升)。 -
Prolog 不支持提取变量的内存地址。因此,我无法编写像您展示的那样的程序。但是,您可以模仿其他程序的某些程序方面,例如
for或while循环。
标签: c prolog swi-prolog