/* 并联电阻值.cpp:
问题描述:编程序,输入两个电阻R1和R2的阻值,求它们并联后的阻值R。提示:计算公式为r=1/(1/r1+1/r2));电阻值为浮点数
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int R1, R2, Ro;
printf("Input the value of the paralleled resistor R1 and R2");
scanf_s("%d %d", &R1, &R2);
Ro = (float)(1 / (1.0 / R1 + 1.0 / R2));
cout << Ro;
//printf("The value of the paralleled resistor R1 and R2 as a whole is %d", Ro);
return 0;
}
感想:
这题对于初学者而言,看似再简单不过,但实际暗藏杀机。“杀机”在于上方code中,17行中的隐性/自动数据类型转换(“隐性转换”)
Ro = (float)(1 / (1.0 / R1 + 1.0 / R2));
项目1-4-2-4中也提到了这个问题:隐性转换时发生的数据丢失(但为什么分配更大的存储单元会丢失?)
C语言支持不同数据类型的value/v