-
确实是浮点数的格式决定的啊,10/3应该是在编译的时侯算的,由于编译器不知道究竟是浮点数的除法还是整数的除法,所以根据被除数和除数的类型判断,所以默认用的整形的除法所以结果是3,转换成浮点数的时候由于内存的布局低位被无视了。所以我们处理浮点的时候应该明确告诉编译器这个是个浮点数,比如我们用(float)10/3就达到目的了。
-
还好吧,至少结果不会在意料之外,不过在C陷进与缺陷里面说用"0123456789abcdef" [ i ]这种字符表的方式,是数字转换成字符的,具有较强的移植性的表达方式。
-
int a[10]; 5[a] =5; a[5] =5; 是一样的效果。。
"0123456789abcdef"[0]是0
"0123456789abcdef"[9]是a。
[ 本帖最后由 medky 于 2011-5-15 00:01 编辑 ]
-
ArrayLength = sizeof(number)/sizeof(number[0]);
这句貌似有问题,
用数组名作形参其实在函数当中会退化成指针,也就是说sizeof(number)其实是一个指针的长度,比如32位机的话就是4,所以只用一个指针变量名是无法知道数组的大小的,一般我们是传递两个参数,一个首地址另外一个是数组的大小。
另外其他地方这样用是因为他的number是一个全局数组,或者是在当前函数的堆栈区。
如有错误之处欢迎大家指正。