为了账号安全,请及时绑定邮箱和手机立即绑定

以下运行结果是答案错了吗? 请好心的大神详细的解释解释

以下运行结果是答案错了吗? 请好心的大神详细的解释解释

隔江千里 2022-05-12 14:11:59
#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覆盖,
然后被字符'#'覆盖,所以最后只有'#'是正确的,
而其它的都是不正确的,根据不同的编译器,可能得到不同的答案。

查看完整回答
反对 回复 2022-05-16
?
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就没什么意思了

查看完整回答
反对 回复 2022-05-16
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号