c语言定义float变量a将1.0写成1有什么不同

看如下代码:

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值