| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:求解一个问题、小弟新手
只看楼主 加入收藏
tracy1436
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-2-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
求解一个问题、小弟新手
#include <stdio.h>
main()
{
    float a,b;
    a=31.1111;b=28.333;
    printf("%f...%7.4f\n",a,b);
    printf("%d\n",(int)a);
    printf("%d\n",a);
}
疑惑是这样的:(int)a,强制转换a为整形后  我想看看现在a到底是不是整形了 所以用最后一个printf查看一下a的值是不是31、但是运行的时候被360查出是木马程序 、请问这是怎么回事?
搜索更多相关主题的帖子: 整形 include 
2012-02-25 16:49
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:5 
原来问题跟程序无关啊……这很正常,不认识的360基本都说是木马,关掉就是了,我每次都要关掉

酱油实习生
2012-02-25 17:44
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:0 
不过楼主最后一条printf会输出错误的结果

酱油实习生
2012-02-25 17:44
tracy1436
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-2-15
收藏
得分:0 
回复 3楼 墨清扬
我知道float用int形式输出肯定会出错、 但是请看我第二个printf  (int)a了   我现在想知道的是 (int)a 后a的数据类型是int型还是float型。。。请指教
2012-02-25 18:42
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:5 
printf("%d\n",a);错了这里的a还是你前面定义的float型的,你这句语句输出格式符合定义的不一致所以出错了。
2012-02-25 21:49
snakelazixp
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2012-2-13
收藏
得分:5 
不用管360,直接关掉。
2012-02-25 22:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
回复 楼主 tracy1436
強制轉換(int)a不是把a的數據類型轉換了,那“轉換”兩字誤導人。b = (int)a,只是把a視為int格式的值賦給本身是int類型的b,a仍然是原來的a,沒有任何改變,b才真的是int型的。無論a是什麼數據類型,都可以“看成”為任何別的類型,這才是“強制轉換”的真正意思。當你printf("%d", (int)a)的時候,printf()使用的值,是(int)a臨時變量的值,這個臨時變量是在內存的另一個地方建立的,當printf()用完它之後,就被廢棄掉,不再存在。所以你沒有辦法轉換a的數據類型,因為它在編譯時就已被確定為float型的(你自己寫下來的)。C語言是靜態強類型語言,數據類型在編譯時確定,運行時不變——其他不是這類型的語言才會容許運行時真的變換數據類型。

授人以渔,不授人以鱼。
2012-02-25 22:10
tracy1436
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2012-2-15
收藏
得分:0 
回复 7楼 TonyDeng
懂了 、感谢版主!
2012-02-25 23:14
快速回复:求解一个问题、小弟新手
数据加载中...
 
   



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

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