main()
{
union{
/*定义一个联合*/
int i;
struct{ /*在联合中定义一个结构*/
char
first;
char second;
}half;
}number;
number.i=0x4241; /*联合成员赋值*/
printf("%c%c\n",
number.half.first, mumber.half.second);
number.half.first='a'; /*联合中结构成员赋值*/
number.half.second='b';
printf("%x\n",
number.i);
getch();
}
输出结果为:
AB
6261
在网上看到的程序为什么第二个输出结果是6261本人刚学c++请懂得大侠们指点
你可以去看一下结构体和联合体的区别,联合体是共用内存的
number.half.first='a'; /*联合中结构成员赋值*/你这两句修改了结构的值,对应联合体的number.i 也就变成了0x6261(ascall码中'a'值为97,对应十六进制61,'b'同理)
追问谢谢你的回答
c++中,这个程序为什么会输出如下结果。。那些9,8之类的数字从哪来的...
因为你用的是单引号,在输出时被cout解释成数字了,所以打印出来的是一串数字,不是你要的符号,把单引号换成双引号,以字符串形式输出。以上是推测的,手上没有电脑,你自己测试一下
...下这个程序!main函数第三行到return 0: 看不懂啊!为什么输出的...
了解了static的作用就明白了,在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见
C++程序(如图)输出的结果为什么不同?
1.一个字符类型的8位,而且字符类型只有大于或等于0的时候才会有表示的字符,字符类型本身是没有加发的,当你使用+时,系统默认把字符类型都转换成int类型才进行加法运算,所以输出结果为-3 2.short虽然有负值,但是执行+法时也是转换成int类型的。3.因为unsigned int 是无符号整数,所以其表示的数值...
C++程序,为什么输出结果是这个??结果小数点后面为什么要四舍五入...
cout默认输出数字时的有效位数为六位,所以就变成这个样子了,如果想改变cout的输出有效位,就要用setprecision(n);如cout<<setprecision(7)<<count(a1)<<","<<count(a2)<<endl;而且要包含头文件:include<iomanip> 希望能帮到你。
C++程序下面的程序运行为什么多出了莫名其妙的数字
没看你的程序,但冥冥之中觉得可能是你内存没有初始化或者是结尾没加界定符导致的
这段c++代码运行结果为什么等于2,3,3,2,-2,-3,现在还是有些不懂! in...
结果就是这样了,这些还算简单。但是说点题外话,比如这样 int b = (a++) * (a --) + (a++) + (++a);甚至更长,你可能正确理解结果。答案是,如果足够长,没有人能够在不头晕的情况下搞定。所以你只要弄清基础的就行了,不要去深究太复杂的东西,这跟编译器以及运算符的结合方向都有关系...
C++的书看完了 但别人写的程序却是看不懂
你需要学习VC++,否则没人看得懂吧。还有不要怕,Windows有时候喜欢把原本熟悉的东西换成新的,其实就是一个#define。例如DWORD就是int
...学习C++又不懂的地方请指教为什么这个程序结果为 1;1;1;呢?_百度...
你这个程序有错误:int& ra ;ra=a;应该改为:int & ra = a;因为引用必须在声明的时候初始化。那么什么是引用呢?说白了就是别名。给变量 ra 起个别名叫 a,所以 ra 和 a 都是对同一个变量的称呼,对应同一份内存。因此:ra==a\/\/ 对应同一份内存 &ra==&a\/\/ 对应同一个地址 sizeof(...
在VC++中为什么C程序运行后答案一闪而过来不及看清
\/\/你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出 while(getchar()!='\\n')continue;\/\/这个循环将把输入缓冲区的内容清掉,一直清到换行符。getchar();\/\/这是你为了防止一闪而过而加的语句 return 0;} 复杂一点的解决方案是,不要在visual c++中执行。你先生成可执行文件,然后...
C++小程序,为什么输出是8
首先让我们来求一下NUM MUN=(M+1)*M\/2 =(N+1+1)*N+1\/2 =(2+1+1)*2+1\/2 =8 所以循环一共做了8次。因此n=8 请楼主千万别在宏定义的时候乱加括号 直接代进去算就可以了。还有不清楚可以hi我