一个TC下的小问题

时间:2022-08-10 17:36:35
1、 时间:2007/9/19
2、 编译环境:TC2.0
3、 问题描述:
有如下程序,在程序中float型变量f和w表达式结构相同,但运算次序不同.

main()
{
int a=2,b=3;
float x=3.5,y=2.5,f,w;
f=x+'A'+(float)(a+b)/2+(int)x%(int)y;
w=x+(float)(a+b)/2+(int)x%(int)y+'A';
printf("\nf=%f",f);
printf("\nw=%f",w);
}

程序运行结果为:
f=5.500000
w=70.500000

4、 实验问题:
在C语言的程序运行过程中运算顺序对程序有何种影响?

8 个解决方案

#1


没有tc

帮你分析下

1) 强转运算的问题 

2) 类型提升的问题

#2


觉得几乎不可能

而且TC淘汰10多年了还用?学了出来混还得重学,抛弃他吧

#3


我运行的结果:

f=72.000000
w=72.000000

Terminated with return code 0
Press any key to continue ...

编译器是MinGW Studio。主要是看运算符的优先级,你找本书对照着从前往后找就行了

#4


我是一位在校教授计算机基础的教师,这个问题是学生提出的,我实验了发现结果就是这样让人无法理解.急切盼望高手帮助分析.

#5


觉得是TC的问题。
另 类型转换也可能有问题  截取部分 可能会出现意外。

没TC

请问,为什么学校都教TC呢?

#6


优先级的提升问题,这个没什么好说的,不同的编译器有不同的实现方法

你可以在当前几种主流的编译器上测试一下,例如gcc,.NET,bcc,然后找出运算符优先级的书

参照着,从前往后一个个转换,如果结果都相同,那你就可以告诉你的学生,让TC下岗吧。

#7


应该是TC编译器的问题~
我用VC、Intel C++、Lab Windows/CVI编译了一下,f和w都是输出72.000
TC只是教学用的一个玩意,真不明白为什么学校还用它做教学,都过时多少年了~~
这样教出来的学生以后还得二次学习

#8


晕啊,TC……而且还是2.0啊……
好多年没用了哦

#1


没有tc

帮你分析下

1) 强转运算的问题 

2) 类型提升的问题

#2


觉得几乎不可能

而且TC淘汰10多年了还用?学了出来混还得重学,抛弃他吧

#3


我运行的结果:

f=72.000000
w=72.000000

Terminated with return code 0
Press any key to continue ...

编译器是MinGW Studio。主要是看运算符的优先级,你找本书对照着从前往后找就行了

#4


我是一位在校教授计算机基础的教师,这个问题是学生提出的,我实验了发现结果就是这样让人无法理解.急切盼望高手帮助分析.

#5


觉得是TC的问题。
另 类型转换也可能有问题  截取部分 可能会出现意外。

没TC

请问,为什么学校都教TC呢?

#6


优先级的提升问题,这个没什么好说的,不同的编译器有不同的实现方法

你可以在当前几种主流的编译器上测试一下,例如gcc,.NET,bcc,然后找出运算符优先级的书

参照着,从前往后一个个转换,如果结果都相同,那你就可以告诉你的学生,让TC下岗吧。

#7


应该是TC编译器的问题~
我用VC、Intel C++、Lab Windows/CVI编译了一下,f和w都是输出72.000
TC只是教学用的一个玩意,真不明白为什么学校还用它做教学,都过时多少年了~~
这样教出来的学生以后还得二次学习

#8


晕啊,TC……而且还是2.0啊……
好多年没用了哦