首页学历类考试大学计算机科学
(简答题)

以下是两段C语言代码, 函数arith()是直接用C语言写的,而optarith()是对arith()函数以某个确 定的M和N编译生成的机器代码反编译生成的。根据optarith(),可以推断函数arith()中M和N的值各是多少?

正确答案

可以看出x*M和“int t=x;x<<=4;x-=t;”三句对应,这些语句实现了x乘15的功能(左移4位相当于乘以16,然后再减1),因此,M等于15; 
y/N与“if(y<0)y+=3;y>>2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。而第一句“if(y<0)y+=3;”主要用于对y=–1时进行调整,若不调整,则-1>>2=–1而–1/4=0,两者不等;调整后–1+3=2,2>>2=0,两者相等。

答案解析

相似试题

  • (简答题)

    考虑以下C语言程序代码: 假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写表格,并说明函数func1和func2的功能。

    答案解析

  • (单选题)

    以下对C语言函数的有关描述中,正确的是()

    答案解析

  • (判断题)

    scanf函数是c语言的标准输入函数。

    答案解析

  • (判断题)

    printf函数是c语言的标准输出函数。

    答案解析

  • (单选题)

    在C语言的函数中,()

    答案解析

  • (填空题)

    C语言的格式输出函数是()。

    答案解析

  • (填空题)

    C语言函数返回类型的默认定义类型是()。

    答案解析

  • (单选题)

    在C语言中,函数的隐含存储类别是()

    答案解析

  • (单选题)

    在C语言中,函数的数据类型是指()

    答案解析

快考试在线搜题