小弟我再进行C++测试时遇到一点小问题
[问题1:Type checking概念]
测试1:
int a 10 ;
float b = 2.5 ;
b = a + b ;
printf( "%f", b ) ;
印出值为:12.5 << 因为会发生型别转换
测试2:
int a = 10 ;
float b = 2.5 ;
b = a / 3 ;
printf( "%f", b ) ;
印出值为:3 << 没有转换 应该要是3.33333
需要改成b = (float)a / 3 才能印出正确的值
为什么测试1的不需要就能印出正确的值??????
因为a和3型态都是int,两个int运算自然只会回传int值
作者:
CaptainH (Cannon)
2014-04-20 15:44:00问题2: (1) heap可以分配较大的阵列, 例如把50改成500万stack 通常会爆炸, heap 不会. (2) 当阵列大小是执行时才确定时, 只能用 new[](3) new 出来的需要 delete
把测试2的3改成3.0即可,这样就跟测试1的环境一样了
测试1,我觉得不太是型别转换,你指定b=a+b,就是a+b值再指定给b 而已啊测试2,float b;跟你下一行 b =a/3也没什么关系,你设 float a =10;float b=0;b=a/3这样就是你要的答案了吧!
作者:
lc85301 (pomelocandy)
2014-04-22 10:50:00compiler在处理运算子时会检查两边的型别,不一致的话会会加上型别转换,就是这样在C里面+就是+,cpp 才有operator overloading的概念