scanf 和printf的类型不安全性

参考《Effective C++ , Item 2》

文中所述:

scanf 和printf 很轻巧,很高效,你也早就知道怎么用它们,这我承认。但尽管他们很有用,事实上scanf 和printf 及其系列还可以做些改进。尤其是,他们不是类型安全的,而且没有扩展性。

何为类型安全?现通过一个简单的例子证明

参考如下代码:

int main()
{
   float q ;
    scanf("%f", &q);
    printf("%d",q);//要求输入一个整形,但是给的是一个浮点型
return 0; }

调试查看输出结果为:

输入 _  5.0 ,输出结果是: 0

输入 _  5.1 ,输出结果是相当大的一个数。

 

改用cout,输出正常。因为类型安全和扩展性是C++的基石

posted @ 2013-03-05 10:31  xh_green  阅读(778)  评论(0)    收藏  举报