的地方雙重價值看到這些線路中的程序:存儲在unsigned int類型
if (ftPtr) {
*ftPtr = feet;
}
注意feet
包含double
值作爲modf()
結果。另一方面,ftPtr
是unsigned int
變量的地址。
問題 現在這個程序沒有任何預兆的運行良好,但它留下了不好的味道在我嘴裏說double值分配給int變量。在C中使用地址koshher將int值賦給int變量?
#include <stdio.h>
#include <math.h>
void metersToFeetAndInches(double meters, unsigned int *ftPtr, double *inPtr) {
double feet;
double inches;
double rawFeet = meters * 3.281;
inches = modf(rawFeet, &feet);
if (ftPtr) {
*ftPtr = feet;
}
if (inPtr) {
*inPtr = inches;
}
}
int main(int argc, const char * argv[])
{
double meters = 1.80;
unsigned int feet;
double inches;
metersToFeetAndInches(meters, &feet, &inches);
printf("%.2f meters is %d feet and %.2f", meters, feet, inches);
return 0;
}