| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 7908 人关注过本帖
标题:为什么浮点数不能赋给整型变量啊?
只看楼主 收藏
a47665335
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-11-25
结帖率:85.71%
  已结贴   问题点数:20  回复次数:6   
为什么浮点数不能赋给整型变量啊?
我记得是可以的啊
但是用scanf()获得一个浮点数 然后直接赋给整型变量 运行程序 就会提示RUNTIME  如
int a;
a=scanf("%f",&a);
改为
float a;
int b;
scanf("%f",&a);
b=a;
偶尔行..
请高人解答!
#include<stdio.h>
int main()
{
    float a;
    int b;
    scanf("%f",&a);
    b=a;
printf("%d",b);
    return 0;
}
没有错啊..

[ 本帖最后由 a47665335 于 2014-11-25 16:26 编辑 ]
搜索更多相关主题的帖子: 运行程序  return  
2014-11-25 15:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:367
帖 子:12726
专家分:49729
注 册:2012-10-18
  得分:7 
没有规矩不成方圆  一切还是按照章程来办事 好些   除非你有足够的能力打破规则

DO IT YOURSELF !
2014-11-25 16:07
a47665335
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-11-25
  得分:0 
回复 2 楼 wp231957
但是第二种是按规矩来的啊
我用VC++运行几次,偶尔能成功
大部分不成功..
2014-11-25 16:22
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
  得分:7 
赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:
(1) 浮点型与整型
● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。
将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。
(2) 单、双精度浮点型
● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。doub1e型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。
(3) char型与int型
● int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。
● chr型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型 数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。
(4) int型与1ong型
● long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。(这里假定int型占两个字节)。
将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。
(5) 无符号整数
● 将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不变,但外部值却可能改变。
● 将一个非unsigned整型数据赋给长度相同的unsigned型变量时, 内部存储形式不变,但外部表示时总是无符号的。

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2014-11-25 16:54
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
  得分:7 
回复 4 楼 liao06550107
“听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。”

说得好。
2014-11-25 17:10
a47665335
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-11-25
  得分:0 
妹的 昨天不行今天什么都没改 又能运行了 ..
2014-11-26 11:31
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
  得分:0 
回复 楼主 a47665335
#include <stdio.h>

int main( void )
{
/*
**在VC6.0中
**在定义f和scanf这两条语句之间,应该对f至少有一个运算操作(比如初始化),以便编译器载入浮点数据库,
**否则虽然编译会通过,但调试时会出现runtime error错误。
**另外,也可以通过将“float f”改为“double f”来避免此错误。
*/
float f;
/*
**这里对f进行至少一个运算操作
*/
scanf( "%f", &f );
return 0;
}

[ 本帖最后由 yahwei 于 2014-11-26 17:48 编辑 ]

[qq]949654600[/qq]
2014-11-26 17:47







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070001 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved