c语言中1.0/2是多少
1个回答
展开全部
数学上是0.5。
但在C语言中,则取决于表示和编译器等。
可以用printf验证:
printf("%.2f",
1.0/2),输出:0.50
C表达式(1.0/2),符号
/
表示除,所以(1.0/2)的值等于0.5。其中,1.0是个单精度浮点数格式的字面值常量所以它是个浮点型数据,以浮点型编码于内存;
2是个整数格式的字面值常量所以它是个整型数据,以整数型编码于内存
。
而C语言规定,一个混合数据类型运算表达式的运算结果的数据类型是表达式中存在的最“大”(double>float>int>char…)的那个类型。例如一个int与一个float的运算表达式的值是float的。
所以这题的表达式(1.0/2)的值将是浮点型的,因此能得到0.5
。
注意,0.5是表达式(1.0/2)的值,它会存于寄存器或内存。而不是(1.0/2)的值的另种类型的拷贝、或解释等:
如下面的,将不会得到想要的结果:
int
r
=
1.0/2;
printf("%f",
r);//0.
printf("%d",
1.0/2);//0
但在C语言中,则取决于表示和编译器等。
可以用printf验证:
printf("%.2f",
1.0/2),输出:0.50
C表达式(1.0/2),符号
/
表示除,所以(1.0/2)的值等于0.5。其中,1.0是个单精度浮点数格式的字面值常量所以它是个浮点型数据,以浮点型编码于内存;
2是个整数格式的字面值常量所以它是个整型数据,以整数型编码于内存
。
而C语言规定,一个混合数据类型运算表达式的运算结果的数据类型是表达式中存在的最“大”(double>float>int>char…)的那个类型。例如一个int与一个float的运算表达式的值是float的。
所以这题的表达式(1.0/2)的值将是浮点型的,因此能得到0.5
。
注意,0.5是表达式(1.0/2)的值,它会存于寄存器或内存。而不是(1.0/2)的值的另种类型的拷贝、或解释等:
如下面的,将不会得到想要的结果:
int
r
=
1.0/2;
printf("%f",
r);//0.
printf("%d",
1.0/2);//0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询