int main() { float a=1.0f; cout<<(int)a<<endl; cout<<(int&)a<<endl; cout<<((int)a==(int&)a)<<endl<<

intmain(){floata=1.0f;cout<<(int)a<<endl;cout<<(int&)a<<endl;cout<<((int)a==(int&)a)<... int main()
{
float a=1.0f;
cout<<(int)a<<endl;
cout<<(int&)a<<endl;
cout<<((int)a==(int&)a)<<endl<<endl;

float b=0.0f;
cout<<(int)b<<endl;
cout<<(int&)b<<endl;
cout<<((int)b==(int&)b)<<endl<<endl;

char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
const char *str5="abc";
const char *str6="abc";
cout<<&str1<<","<<&str2<<","<<&str3<<","<<&str4<<endl;
cout<<&str5<<","<<&str6<<endl;
cout<<(str1==str2)<<endl;
cout<<(str3==str4)<<endl;
cout<<(str5==str6)<<endl;

return 0;
}

怎么分析,这样的题目?? 请给出答案及理由/谢谢!!
展开
 我来答
hongbaomei
2010-09-26
知道答主
回答量:13
采纳率:0%
帮助的人:7.7万
展开全部
在机器上运行一下,可以得到结果,输出的是1065353216,而不是1。这是因为浮点数在内存里和整数的存储方式不同,(int&)a相当于将该浮点数地址开始的sizeof(int)个字节当成int型的数据输出,因此这取决与float型数据在内存中的存储方式,而不是经过(int&)a显示转换的结果(1)。
因为float a=1.0f在内存中的表示都是3f800000,而浮点数和一般整数不一样,所以当(int&)a强制转换时,会把内存值3f800000当作int型输出,所以结果自然变为了1065353216(0x3f800000的十进制表示)。
子豪大卖场
2010-09-13 · TA获得超过202个赞
知道答主
回答量:133
采纳率:0%
帮助的人:0
展开全部
纯粹的输出语句哦
1 //强制转换后的值
1065353216 //见附录
0 //等式判断结果

0 //同上
0
1

0x0012FF74,0x0012FF70,0x0012FF6C,0x0012FF68 //地址的输出
0x0012FF64,0x0012FF60
0 //等式的判断
0
1

附录:
(int&)a:将a的引用强制转换为整型,意思是a所在的内存,本来定义的时候为float类型,并初始为1.0f,
但现在我要按int类型解释这段内存(也就是说a所在的内存地址中的数据本来是按float型存储表示的,你非要按int型来解释不可)。
1.0f 在内存中的存储为
0 011 1111 1 000 0000 0000 0000 0000 0000.
把他按整型数解释为2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216

(int&)a 相当于
*(int*)&a

*(int*)(&a)

*((int*)&a)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈学阳
2010-09-13 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5610万
展开全部
最后肯定输出的是m+1的值,即6

分清 m++ ++m , 它们作为单个表达式的值是不一样的,前者为m的值,后者为m+1的值,但运行它们之后的效果是一致的,即让 m = m + 1。
m-- 与 --m的区别也同上,不过是减1的区别

因此,第一个if
等价于 if(m > 5) (同时让m = m + 1),
判断完毕后m已经变为6,
因为条件不成立,所以走else分支,输出m--(即m的值6,别忘记了之后m要减1)

如果程序最后再来个让你输出m的值,则m = 5

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式