该程序将如何执行?

时间:2013-08-25 06:15:29

标签: c

该程序将如何执行?

#include <stdio.h>

void main() { 
    char a = 0xAA;
    int b;
    b = (int) a;
    printf("%d\n", a); 
    b = b >> 4;
    printf("%x", b); 
}

[问题]

我在声明b = (int)a中遇到问题。当b存储在其中时,您能否给出a的二进制表示?

3 个答案:

答案 0 :(得分:1)

对于语句b = (int)a;,我们将char类型转换为int。假设char是隐式签名的(NB:并非总是如此!)而且int是32位,那么char0xAA会因符号扩展而变宽,所以{ {1}}变为0xAA,相当于十进制的0xFFFFFFAA

答案 1 :(得分:1)

char a = 0xAA; // line 1
int b; // line 2
b = (int) a; // line 3
printf("%d\n", a); // line 4
b = b >> 4; // line 5
printf("%x", b); // line 6

第1行:从十六进制为a类型的变量char分配一个字符

第2行:声明b类型的变量int

第3行:通过类型转换将char a的值分配到charint。它将输出一个int值。

第4行:以int格式

输出char a的值

第5行:通过右移将其重新分配给4。

第6行:以十六进制格式输出b的值。所以输出应该是某种东西,例如; FFAA454就像。

这就是您的代码的工作方式。

答案 2 :(得分:0)

如果您想知道控制台将输出什么,请参阅以下内容:

-86
fffffffa

将来,如果您想了解如何执行测试用例,请尝试使用this之类的内容。