深入理解:K&R:如果某个算术运算符有一个浮点型操作数和一个整型操作数,则在开始运算之前整型操作数将会被转换为浮点型

/* //深入理解:K&R:如果某个算术运算符有一个浮点型操作数和一个整型操作数,则在开始运算之前整型操作数将会被转换为浮点型。 */
#include <stdio.h>
int main(){
	int x = 1;
	int y = 2;
	int s ;
	float ss;//为了不丢失精度,结果以float型保存
	float sf;
	float sf1;
	float sf2;
	s = 1.0+x/y;
	ss = 1.0+x/y;
	sf = float(x/y);
	sf1 = (float)x/(float)y;
	sf2 = x/(y*1.0);
	printf("sf2 = %f\n",sf2);//0.500000
	printf("sf1 = %f\n",sf1);//0.5
	printf("sf = %f\n",sf);//0.000000
	printf("ss = %f\n",ss );//1.000000
	printf("s = %d\n",s );//1
	printf("x/y*1.0 = %f\n",x/y*1.0);
	printf("(1.0 + x/y) = %f\n",(1.0 + x/y) );//1.000000
/*由于x/y的优先级更高,所以该式为1.0 + 0 = (float)1.0=1.000000 */
	printf("(1.0 + x/y) = %d\n",(1.0 + x/y) );//0
	printf("1.0 + x/y = %d\n",1.0 + x/y);//结果为0,because 这里%d优先正对单个变量

	return 0;
}


posted @ 2021-05-17 20:03  xuchaoxin1375  阅读(11)  评论(0)    收藏  举报  来源