C语言中整型变量用实型输出以及实型变量用整型输出结果会怎么样?

C语言中整型变量用实型输出以及实型变量用整型输出结果会怎么样?
会不会直接输出0.000000和0
我写了个:
main()
{
int a=4;
float b=4.3;
printf("int:%d\tfloat:%f\n",a,a);
printf("float:%f\tint:%d",b,b);
}
结果是:
int:4 float:819.200202
float:4.300000 int:0

能帮我分析一下吗?

第1个回答  2010-05-07
你这里首先一个严重问题就是不管什么环境下变长参数接受float和int的长度都不一样

你这里看上去是16位的,int是2字节 float是4字节

第一个printf 除格式需要6字节的参数你只提供了4字节,%f的高2字节是不缺定的值,所以打印出来的float也是不确定的(当然你每次执行这个程序可能会一样,但是改一下调用顺序就不行了)

第二个要求6个字节你给了8个字节,另外第二个printf没理由是0... 16位下应该是39322本回答被提问者采纳
第2个回答  2010-05-07
囧,,好吧
int 存放是二进制
但是浮点数的存放中有一部分二进制位代表的是2的几次方

float用科学计数法
1bit符号 + 8bits指数 + 23位有效数字

int
sigma(bit[i]*2^i)

存储格式不一样
所以一样的二进制数代表的数值不一样

ps

楼上,32位机明显int float一样长,
又是读谭浩强读出来的吧= =b

...和实型常量、整型变量和实型变量的不理解和使用...
const int PI = 3.14;那么以后你在程序中想用π的值的时候,就不用每次都输入3.14,直接输入PI就好 而变量是程序中你需要修改值的一些量,简单些你可以把变量理解为y = f(x) 中的x,程序的任务就是根据需求去改变x的值,来得到相应的y值 至于整型还是实型,开始你可以就把它理解为整数和小...

C语言中为何整型变量以实型变量输出为0?
所以造成入栈实参的类型和实际函数使用的类型不匹配(关键是所占内存的大小不同),所以在具体的解析中就会出现如题所说的结果,因为整形的内存布局在被解析为浮点数时会非常小,因为整形本来是4个字节存储,而被解析为8个字节的浮点数,所以所得的值会非常小,正如浮点数的的表示:非规格化:当E的二...

C语言里为何将实型赋值给正型变量时要强制类型转换
将实型数据赋值给整型变量时,会自动截断取整(丢弃小数部分),因此可以不使用强制类型转换。例如 long int a;a=123456.7890123;则变量a的结果为123456

C语言中 整型变量可以存放实型数值吗
可以的,可以用定点数的方法保存实型数据,比如可以约定小数点的位数,如小数点后占8位,那么两个字节的16位整数就可以保存小数点前面和后面都是8位的小数了,计算时也按照这个约定进行 拿十进制举例来说,要用整数保存3.14,那么就约定,我们所有的小数都是整数除以100得到的,则3.14就可以表示成314...

c语言的整形和实型是什么意思
字符常量就相当于一个字母,字符串常量就相当于一个单词,当然字符不只有字母,字符串就是有多个字符组成的 常量的意思就是固定了的字符串,或者字符 跟他们对应的有字符变量,字符串变量

...对于整型变量只能输入整型数值,对于实型变量只能输入实型数值”这...
肯定是错误的,整形变量也可以输入实形数值的 如scanf("%d",&i); \/\/i为int类型,你输入浮点型会隐式转换为整形

当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实...
实型也可以输入整形。第一部分是正确的,不仅小数点不会直接读取而丢失,而且小数点或“E”会留在键盘转缓冲区中,如果有后续的键盘输入会造成错误。后半部分是不正确的,如果允许一个整数,它将自动转换为实数。整型变量也可以输入实值,例如scanf("%d",&i);\/\/ I的类型为int,并且输入的float被...

c语言整型和实型相加为什么不一样
区别在于编码方式上。C语言中,整型运算和实型运算是两种不同的运算,这一点和数学不同,C语言整型数和实型数最在的区别在于编码方式上。1、C语言整型数使用原码、反码、补码三种编码方式。2、实数型使用的是IEEE754编码方式,IEEE754中规定了实数符号位、指数位和尾数位,即有效数字位所占的二进制...

在C语言中,定义一个变量为整型变量,使用什么为关键字?若为实型,使用什...
字节 整型 :int 2 long[int] 4 实型:float 4 double 8 这都是一般长用的实型 单精度(float)7个位有效位 双精度(double)15个有效位

判断正误:C语言中整型变量只能输入整型值;对于实型变量只能输入实型值...
错的。。两种都会自动转换,只是会损失精度而已。。

相似回答