C语言_C语言习题_题解
21视频教程网C语言视频教程编辑部3月21日整理
学生:
#include <stdio.h>
main()
{
union un
{
short int a;
char c[2];
}w;
w.c[0]='A';
w.c[1]='a';
printf("%o\n",w.a);
}
能解释计算过程吗?
C语言视频教程编辑部:
你在printf("%o\n",w.a);上面再加条你就明白了.
printf("%o....%o\n",w.c[0],w.c[1]);
上面是八进制变成二进制就是c[0]:001000001和c[1]:001100001
把第一个0去掉,都变成八位,按c[1]c[0]顺序接起来就是0 110 000 101 000 001
即八进制60501
学生:
这里a 并,诶有赋直啊 怎么输出 解释一下
C语言视频教程编辑部:
注意:以8进制形式输出 %0是 数字0。而不是字母o.
C语言视频教程编辑部:
union是定义共用体的,
实际上union定义了一个内存区域,里面的变量都放在同一区域,而这个区域大小是有里面最大的变量决定的,你定义了a是整型变量占2个字节,数组c[]为字符型的每个成员占一个字节。两个数组元素刚好也是两个字节。所以数组元素和a在同一个地址位置。数组两个元素分别位于这个区域的前一个和后一个字节。
关键你定义的union比较简单。复杂点就不是这样排列了。比如里面在嵌入几个结构体等等。
对于这个有关资料肯定解释得比我清楚。
学生:
了解 谢谢
C语言视频教程编辑部
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |