Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Frama-C简单形式规范_C_Frama C - Fatal编程技术网

Frama-C简单形式规范

Frama-C简单形式规范,c,frama-c,C,Frama C,我正在使用Frama-C正式规范,用于两种方法: /*@ requires n >= 0; ensures result >= 0; terminates n == 0; */ int decimal_binary(int n) { int rem, i = 1, binary = 0; while (n != 0) { rem = n % 2; n /= 2; binary +=

我正在使用Frama-C正式规范,用于两种方法:

/*@ requires n >= 0;
    ensures result >= 0;    
    terminates n == 0; 
 */
int decimal_binary(int n)  
{
    int rem, i = 1, binary = 0;
    while (n != 0)
    {
        rem = n % 2;
        n /= 2;
        binary += rem * i;
        i *= 10;
    }
    return binary;
}
/*@ requires n >= 0;
    ensures result >= 0;    
    terminates n == 0; 
*/
int binary_decimal(int n) 
{
    int decimal = 0, i = 1, rem;
    while (n != 0)
    {
        rem = n % 10;
        n /= 10;
        decimal += rem * i;
        i = i << 1;
    }
    return decimal;
}

以上是我目前工作后得到的。我不知道如何描述变量和循环。

你的问题是什么?最好将所有内容声明为无符号int或查询输入>0。我的问题是如何描述例如:二进制\十进制中的int-decimal、i和rem变量。另外,如何描述循环中的行为?您是指二进制编码的十进制BCD吗?您需要知道如何以二进制或十进制输出吗?我正在使用ACSL正式规范。我找到了这个:。但是我仍然不知道如何描述变量和循环,还不清楚你所说的描述变量和循环是什么意思。在ACSL中,您可以编写循环不变量,这些不变量指示包含任何数量的循环步骤(包括0)的属性,并且可以引用循环语句本身作用域中的任何变量。另外请注意,您缺少'in\result'。最后,你的问题纯粹是关于C,你应该删除C++标签。