#inlude"stdafx.h"#include<iostream.h>union area{ short a;long b;char c;}num;int main(int argc,char*argv[])这里的char*argv[]含义与作用是什么?{num.a=10;num.b=123456;num.c='#'cont<<num.a<<endl;cont<<num.b<<endl;cont<<num.c<<endl;cin>>argc;return 0;}运行结果为什么是-7645123427#为什么不是10123456#
2 回答

江户川乱折腾
TA贡献1851条经验 获得超5个赞
char*argv[]是你从命令行得到的字符串数组,如:
a.exe jj jjk
argv[0] = "a.exe"
argv[1] = "jj"
argv[2] = "jjk"
argc就是这里的字符串的数量。
联合不是结构体,其成员只是共享一段内存。
每当你对其成员赋值之时,如果不是先前所储存的那个成员,则会发生覆盖,所以,刚开始,你的联合的内存内赋予:10
然后该内存块被123456覆盖,
然后被字符'#'覆盖,所以最后只有'#'是正确的,
而其它的都是不正确的,根据不同的编译器,可能得到不同的答案。

qq_笑_17
TA贡献1818条经验 获得超7个赞
int argc,char*argv[]是main()的两个参数,main()要么不要参数,要么用这两个,具体意思俺还没学到
num.a=10;
num.b=123456;
num.c='#'
Union是覆盖型的赋值,就是说你给一个成员赋值之后会把原来成员的值冲掉,所以你最后给num.c赋值之后,num.a和num.b就没什么意思了
添加回答
举报
0/150
提交
取消