Tag: 确定性

是否使用堆内存(malloc / new)创build一个非确定性的程序?

几个月前我开始用C开发空间应用程序的软件,也用C ++开发微控制器。 在这样的系统中有一个经验法则,那就是不应该创build堆对象 (所以不需要malloc / new),因为它使得程序不确定 。 当人们告诉我时,我无法validation这个声明的正确性。 那么这是一个正确的说法吗? 对我来说,困惑是,就我所知,决定论意味着运行一个程序两次将导致完全相同的执行path。 从我的理解,这是一个multithreading系统的问题,因为多次运行相同的程序可能会有不同的线程在不同的次序运行。

以独特而确定的方式将两个整数映射到一个整数

设想两个正整数A和B.我想把这两个整合成一个整数C. 没有其他整数D和E结合到C中,所以把它们和加法运算符结合起来是行不通的。 例如30 + 10 = 40 = 40 + 0 = 39 + 1连接工作也没有。 例如“31”+“2”= 312 =“3”+“12” 这种组合操作也应该是确定性的(总是用相同的input产生相同的结果), 并且应该总是在整数的正或负上产生一个整数。

C#中的静态类初始化的顺序是确定性的吗?

我做了一些search,我认为下面的代码是保证产生输出: BX = 7 BX = 0 AX = 1 A = 1,B = 0 static class B { public static int X = 7; static B() { Console.WriteLine("BX = " + X); X = AX; Console.WriteLine("BX = " + X); } } static class A { public static int X = BX + 1; […]