看板Programming
标 题Re: 请问c语言的int
发信站不良牛牧场 (Fri Jun 27 21:44:24 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.au!zoonews.ee.ntu!SimF
我想问题出在於对 int及float的型别宣告、观念等仍不熟,
而且程式中还看到只有人类才会出现的算数思考模式!
举个例:
35 ÷7 = 5
35 ÷2 = 17.5
若是结构式程式语言, 则应该这麽做:
int a = 35;
float b = 35;
printf("a除以7等於
%d\n", a /= 7);
printf("b除以2等於
%f\n", b /= 2);
简单讲就是运算的数值型别跟printf的型别必须一样!
已经分别用不同颜色标示出来给你看罗!!!
有人回文说数值不会自动转换, 这是正确的!
因此程式设计师必须要特别注意数值型别及运算!!
有两个方式修改:
法一:
printf("1a除以2为
%f\n", a/=2); //红色是错误
--> printf("1a除以2为
%d\n", a/=2); //绿色是修正
法二:
printf("1a除以2为%f\n",
float(a/=2
)); //绿色是修正
在一两篇回文有看到说原始程式的写法是不建议且不符合ANSI C,这的确是!
而且原作者的程式撰写习惯在观念易产生错误!就像原作者的错误观念是一样的 !
正确的写法应该是按部就班,这对初学程式语言的人较易於厘清观念。
所以保险做法应该是这样子:
int a = 35;
float 1a = (float(a))/2; //先将int型别的a转换成float型别, 再运算!
--
※ 引述《[email protected] ( )》之铭言:
: 我有一个问题,请看以下语法(我只是修改printf的叙述)
: #include<stdlib.h>
: main()
: {
: int a=7;
: printf("a=%d\n",a);
: printf("a加上5为%d\n",a+=5);
: printf("a减掉5为%d\n",a-=5);
: printf("a乘以5为%d\n",a*=5);
: printf("1a除以2为%f\n",a/=2);
: printf("a除以3余数为%d\n",a%=3);
: float b=35;
: printf("b除以2为%f\n",b/=2);
: printf("2a除以2为%f\n",a/=2);
: system("PAUSE");
: return 0;
: }
: 执行的结果为
: a=7
: a加上5为12
: a减掉5为7
: a乘以5为35
: 1a除以2为0.000000
: a除以3余数为2
: b除以2为17.500000
: 2a除以2为17.500000
: 请按任意键继续 . . .
: 现在的重点是a是int型态
: printf("1a除以2为%f\n",a/=2);
: printf("2a除以2为%f\n",a/=2);
: 而输出结果为
: 1a除以2为0.000000
: 2a除以2为17.500000
: 为何2a那一行会有小数出现?
--
╭──── Origin:
<不良牛牧场> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [59.113.165.104] │
╰◣◣◢ ◢◢《不良牛免费拨接→电话:40586000→帐号:zoo→密码:zoo》 ◣◣◢ ─╯
1F:→ pthuang:哇 这篇是从不良牛来的耶 XD 140.126.21.58 12/12 00:36