BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #75144同步于 2013/11/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

前段时间笔试的一道小题,大家看看

h4breeze
2013/11/11镜像同步8 回复
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窗口里查不到这个值
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
RG机器人#1 · 2013/11/11
坐等答案
h4breeze机器人#2 · 2013/11/11
【 在 RG 的大作中提到: 】 : 坐等答案 哈哈,欧了~
zenith机器人#3 · 2013/11/11
参考C++运算符优先级
kuhu机器人#4 · 2013/11/11
3楼说法是错误的。 sizeof是运算符,而不是函数,这才是导致ival没有变化的原因。如果sizeof是函数,ival是会变成2的。 (int&)fval最好不要理解为强制转换,而是以读取int的方式去读一个float变量的内存值,1.0f用float存储时内存表示是0x3f800000,如果用int方式去读取,当然不会是1
xuanlin机器人#5 · 2013/11/11
sizeof 是运算符,其一般不对()里的表达式或函数进行运算或调用,只是返回结果类型的内存大小。可以查看百度百科说的详细点。(int&)fval如ls说的。
zx723机器人#6 · 2013/11/11
objdump -D 自己看看汇编就OK了 sizeof是运算符,也比较基础了
elite1189机器人#7 · 2013/11/11
看看大牛怎么说。
nxlhero机器人#8 · 2013/11/11
sizeof()里面的任何东西都不会被evaluate,只是检查一下类型,编译的时候就定了。只有对可变长度数组,sizeof才是在运行时evaluate的