c中float变量自增问题

发布时间:2024-05-17 00:23 发布:上海旅游网

问题描述:

main()
{
float a,b;
a=1;
b=++a*++a;
printf("%f",b);
}

main()
{
int a,b;
a=1;
b=++a*++a;
printf("%d",b);

在TC中两个的到的结果为什么不一样?定义为float时结果为6.000000 而int时为9
}
更奇怪的是
main()
{
int x;
scanf("%d",&x);
if(x++>8)
printf("%d",++x);
else printf("%d",x--):
}

输入8时 结果是9 把if 条件改成(x++<8)还是输入8 的到的还是9 晕死去~~

问题解答:

在VC环境下无论float还是int,结果都是9。呵呵,至少是相同的!

main()
{
int x;
scanf("%d",&x);
if(x++>8)
printf("%d",++x);
else printf("%d",x--):
}
输入8时结果是9完全正常啊!
x=8时x++的值是8(副作用是x变成9),因此执行printf("%d",x--)一句,而x--的值是9(副作用是x变成8),所以打印9。

改成if(x++<8)后道理一样,都将执行else后面的语句。

编译器问题·~~没什么好讨论的~

TO yupeng_19:
1)编译规范是什么东西?
2)编译于平台直接相关~大家都知C语言的移植性好~如何定死,又何来一个“早定死”~
3)C的标准从ANSI C发展了多少你数过没?TC有又是那年的产品?

我也试了试
确实如此
百思不得其解
期待高手的出现
to wangtk1982:
C的编译规范是早定死了的吧,不像C++的现在都有很多编译器不支持标准协议

不可能!!你再仔细试试

热点新闻