作者mosquito520 ( )
看板Programming
标题Re: 请问c语言的int
时间Thu May 29 03:04:29 2008
※ 引述《[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那一行会有小数出现?
这应该是dependent on complier的问题,
你可能需要先搞清楚的是...
当你使用printf传入的参数是a/=2
那实际上它传入的是a?还是a/2?
同样的,
1a那行,a应该是35,
a/=2传进去为什麽会是0.000000?
这些牵涉到complier实际上怎麽处理这些指令。
把你的程式修改一下:
#include<stdlib.h>
main()
{
int a=7;
printf("a=%d\n",a);
printf("a加上5为%d\n",a+=5);
printf("a=%d\n",a);
printf("a减掉5为%d\n",a-=5);
printf("a=%d\n",a);
printf("a乘以5为%d\n",a*=5);
printf("a=%d\n",a);
printf("1a除以2为%f\n",a/=2);
printf("a=%d\n",a);
printf("a除以3余数为%d\n",a%=3);
printf("a=%d\n",a);
float b=35;
printf("b除以2为%f\n",b/=2);
printf("a=%d\n",a);
printf("2a除以2为%f\n",a/=2);
printf("a=%d\n",a);
system("PAUSE");
return 0;
}
输出:
a=7
a加上5为12
a=12
a减掉5为7
a=7
a乘以5为35
a=35
1a除以2为0.000000
a=17
a除以3余数为2
a=2
b除以2为17.500000
a=2
2a除以2为17.500000
a=1
建议你如果有兴趣的话可以去看看Misra-C的资料或是上相关的课程,
因为你这样的写法原本就是不建议或是Ansi C当中没有定义的。
--
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
国 立 联 合 大 学
(理工/电资/管理/技术/客家)院所 招生中
National United University
───────────────────────────────────
首页
http://www.nuu.edu.tw BBS telnet://uun.twbbs.org
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.145.202