返回信息流float fval=1.0f;
int ival=-1;
int len=sizeof(ival=2);
cout << ival << " " << len << " " << (int&)fval << endl;
---------
int len=sizeof(ival=2); 为什么ival不会变化呢;
(int&)fval 这是什么意思,能正常输出,但单步调试时,在watch窗口里查不到这个值
这是一条镜像帖。来源:北邮人论坛 / cpp / #75144同步于 2013/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
前段时间笔试的一道小题,大家看看
h4breeze
2013/11/11镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
3楼说法是错误的。
sizeof是运算符,而不是函数,这才是导致ival没有变化的原因。如果sizeof是函数,ival是会变成2的。
(int&)fval最好不要理解为强制转换,而是以读取int的方式去读一个float变量的内存值,1.0f用float存储时内存表示是0x3f800000,如果用int方式去读取,当然不会是1
sizeof 是运算符,其一般不对()里的表达式或函数进行运算或调用,只是返回结果类型的内存大小。可以查看百度百科说的详细点。(int&)fval如ls说的。
sizeof()里面的任何东西都不会被evaluate,只是检查一下类型,编译的时候就定了。只有对可变长度数组,sizeof才是在运行时evaluate的