#include <stdio.h> main() union char a[2];int k; data; data.a[0]='5'; data.a[1]='

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#include <stdio.h> main() union char a[2];int k; data; data.a[0]='5'; data.a[1]='相关的知识,希望对你有一定的参考价值。

#include <stdio.h> main() union char a[2];int k; data; data.a[0]='5'; data.a[1]='\0'; printf("%d",data.k);
输出的答案是多少啊 能解释一下吗?谢谢

是53,原因是你输出的是共用体(union)data中的一个变量,共用体的特点就是所有的内部变量共用一个地址,所以之前赋值的'5'就是这段内存的真值,但是输出的是整形,所以输出的是'5'的ASCII码,对应的也就是53。 参考技术A 结果是:-859045835

由于联合体使用的是同一块内存,也就是说,改变了a,会改变k
没有初始化的data,是4个字节的,十六进制表示为:0xCCCCCCCC
修改char[0]='5',十六进制是:0x35
修改char[1]='\0',十六进制是:0x00

由于这个是栈,因此修改以后,data.a 的值就变为:0xCCCC0035,以十进制打印出来就是:
-859045835

不懂可追问
参考技术B 5追问

你解释一下吗? 谢谢!

以上是关于#include <stdio.h> main() union char a[2];int k; data; data.a[0]='5'; data.a[1]='的主要内容,如果未能解决你的问题,请参考以下文章

C 编程指令 #include<stdio.h> printf

在C语言中#include "stdio.h"和#include <stdio.h>有啥区别?

C语言里面的这个#include <stdio.h>啥意思啊?

Visual Studio Code,#include <stdio.h> 说“将包含路径添加到设置”

Visual Studio Code,#include <stdio.h> 说“将包含路径添加到设置”

用vs2010编了以下程序 #include<stdlib.h> #include<stdio.h> #define OVERFLOW -2 #define OK 1 #def