為什么用int不會溢出用float會溢出
#include?<stdio.h> float?money(int?t,int?d) { ???? float?pay; if(d<=3) pay=13+1; ????else if(t>=5||t<23) pay=(d-3)*2.3+13+1; else pay=(d-3)*2.3*(1+0.2)+13+1; ????return?pay; } int?main() { ????float?sum; sum=money(9,12)+money(18,12); ????printf("小明每天打車費(fèi)用為%d元。",sum); ????return?0; }
main函數(shù)里sum用int定義可以正常運(yùn)行,但是用float的時候會溢出
2017-08-03
1.int和float首先明白其本質(zhì)是數(shù)據(jù)類型,何為數(shù)據(jù)類型,其實(shí)其名字就告訴我們,像我們學(xué)習(xí)時喜歡把整數(shù)和小數(shù)分開一樣,這里的int是整數(shù)類型,float是浮點(diǎn)數(shù)(小數(shù)類型)。這不就是倆種數(shù)據(jù)類型
2.那么為什么要區(qū)分那,主要原因是計算機(jī)在存儲數(shù)據(jù)時分配的內(nèi)存空間是不同的,你定義了int(整型)它就分配對應(yīng)整型的大小,比如4個內(nèi)存單元。
3.那么我為什么要說比如是4個內(nèi)存單元那,原因是不同的cpu分配內(nèi)存是不一樣的,32位cpu分配的int就是4個字節(jié),至于為什么如此,這是硬件設(shè)計時決定的(32位/8=4字節(jié))(不理解跳過)
4.綜上所述,你應(yīng)該明白你定義的每一個變量都會分配一塊內(nèi)存,并且分配內(nèi)存的大小是取決于你的數(shù)據(jù)類型的