C语言中自动隐式转换和类型强制转换的一点注意

直奔主题程序先看一道题:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

double proc(int q){

int n;

double sum,t;//本题的关键就在这几个变量的类型上

sum = 2.0;

while(sum<=q){

t=sum;

//sum = sum+(n+1)/n;

sum =sum +(double)((n+1)/n);

n++;

}

return t;

}

void main(){

system("C");

printf("%f\n",proc(10))

}

当我们看到sum = sum+(n+1)/n;这样的语句总会不假思索的对n这个变量来个强制转换,但是c语言书上又有这么一句话”当一个低精度的数据类型和一个高精度的数据类型运算时,运算结果为高精度类型。“这个时候不要迷茫,这只是强调结果。为了让其他人看懂我们要对数据做些什么,最好对它进行强制转换。在这里,所谓低精度到高精度的自动隐式转换实际上还是强制的类型转换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值