看如下代码:
#include<stdio.h>
int main() {
float i=2, j=3, k=4;
float a,area;
a = 1.0 / 2 * (i + j + k);
area = a * a;
printf("%.2f\n", a);
printf("%.2f\n", area);
a = 1 / 2 * (i + j + k);
printf("%.2f\n", a);
area = a * a;
printf("%.2f", area);
system("pause");
return 0;
}
运行结果为:
1/2是整型运算,结果为整型,结果为0,将0赋给变量a,a=0
同样道理,2/1是整型运算,结果为整型,结果为1,将1赋给变量a,a=1
并不是定义a为float型,就能影响到等式右边的计算,等式右边还是整型运算。
要想得到a的实际值,可用a=1.0/2;或a=1/2.0或a=1*1.0/2,就是等式右边要引入浮点型进行计算。
设有定义:float a=2,b=4,h=3;以下C语言表达式中与代数式计算结果2/3是个整数表达式.你可以写成2.0/3,2.0/3.0,2/3.0,(float)2/3或者float a=2; a /= 3都可以.
下面看一道题:
设有定义:float a=2,b=4,h=3;
以下C语言表达式中与代数式(a+b)h计算结果不相符的是
A.(a+b)h/2 '.(1/2)(a+b)h C.(a+b)h1/2 D.h/2(a+b)
正确答案为B.
原因是:(1/2)为整形除以整形,得到的结果也是整形,结果为0;代数式中1/2为0.5,所有两者结果不相符.
c语言中设a为float类型的常量,a=2.0与a=2有区别吗? …… 没得区别,都说浮点型
C++问题若有下面的变量定义,以下语句中合法的是若有下面的变量定义,以下语句中合法的是inti,a[10],*p;a.P=a+2b.p=a[5]c.p_a[2]+2d.p=&(i+2)
a.p=a+2 a是指针 p是指针 p=a+2合法,不过题中P大写不正确
b.p=a[5] 类型不匹配
c.p-a[2]+2 类型不匹配
d.p=&(i+2) 不能取表达式地址
c++中的浮点类型的定义用,下面的那个对float a=0,float a=0.00000 两个都可以,如果想定义得很好,可以定义为:float a=0.f