c++输出函数printf的问题
下面这段话是《c语言深度剖析》中的话,说不到万不得已,不要使用printf。为什么?从现在开始,除非在特殊情况下,不允许用printf这个函数。为什么呢?很多学生写完代码...
下面这段话是《c语言深度剖析》中的话,说不到万不得已,不要使用printf。为什么?
从现在开始,除非在特殊情况下,不允许用 printf 这个函数。为什么呢?很多学生写完
代码,直接用 printf 打印出来,发现结果不对。然后就举手问我:老师,我的结果为什么不
对啊?连调试的意识都没有!大多数学生根本就不会调试,不会看变量的值,内存的值。
只知道 printf 出来结果不对,却不知道为什么不对,怎么解决。这种情况还算好的。往往很
多时候 printf 出来的结果是对的, 然后呢, 学生也理所当然的认为程序没有问题。 是这样吗?
往往不是,往后看,你能看到例子的。永远给我记住一点:结果对,并不代表程序真正没
有问题。所以,以后尽量不要用 printf 函数,要去看变量的值,内存的值。当然,在我们目
前的编译器里,变量的值,内存的值对了就代表你程序没问题吗?也不是,往后,你也会
看到例子的。
这个时候呢,学生往往会莫名其妙。这个老师有问题吧。大学里我们老师都教我们怎么
用 printf,告诉我们要经常用 printf。这也恰恰是大学教育失败的地方之一。很多大学老师根
本就没真正用C语言写过几行代码, 更别说教学生调试代码了。 不调试代码, 不按F10或F11,
水平永远也无法提上来,所以,要想学好一门编程语言,最好的办法就是多调试。你去一
个软件公司转转,去看人家的键盘,如果发现键盘上的 F10 或 F11 铮亮铮亮,毫无疑问,
此机的主人曾经或现在是开发人员 (这里仅指写代码的, 不上升到架构设计类的开发人员)
还有一些疑问,像这段语句:printf("%d,%c\n",i,j),%d代表整型,还是d代表整型?%起什么作用?还有,c是字符型,输出的要是double型,那应该是哪个? 展开
从现在开始,除非在特殊情况下,不允许用 printf 这个函数。为什么呢?很多学生写完
代码,直接用 printf 打印出来,发现结果不对。然后就举手问我:老师,我的结果为什么不
对啊?连调试的意识都没有!大多数学生根本就不会调试,不会看变量的值,内存的值。
只知道 printf 出来结果不对,却不知道为什么不对,怎么解决。这种情况还算好的。往往很
多时候 printf 出来的结果是对的, 然后呢, 学生也理所当然的认为程序没有问题。 是这样吗?
往往不是,往后看,你能看到例子的。永远给我记住一点:结果对,并不代表程序真正没
有问题。所以,以后尽量不要用 printf 函数,要去看变量的值,内存的值。当然,在我们目
前的编译器里,变量的值,内存的值对了就代表你程序没问题吗?也不是,往后,你也会
看到例子的。
这个时候呢,学生往往会莫名其妙。这个老师有问题吧。大学里我们老师都教我们怎么
用 printf,告诉我们要经常用 printf。这也恰恰是大学教育失败的地方之一。很多大学老师根
本就没真正用C语言写过几行代码, 更别说教学生调试代码了。 不调试代码, 不按F10或F11,
水平永远也无法提上来,所以,要想学好一门编程语言,最好的办法就是多调试。你去一
个软件公司转转,去看人家的键盘,如果发现键盘上的 F10 或 F11 铮亮铮亮,毫无疑问,
此机的主人曾经或现在是开发人员 (这里仅指写代码的, 不上升到架构设计类的开发人员)
还有一些疑问,像这段语句:printf("%d,%c\n",i,j),%d代表整型,还是d代表整型?%起什么作用?还有,c是字符型,输出的要是double型,那应该是哪个? 展开
6个回答
展开全部
首先printf是c语言的函数,不是c++的,因为c++兼容c语言所以能用,不过要注意我说的,这个是有区别的
我觉得这篇文章可能是在批评的printf的没有任何检查错误的能力吧,就是说没有类型检查,例如
char c = 'a';
printf("%d",c);
这个你说能输出吗?能输出,不过你又会问,变量是char类型的,printf的输出符是%d,%d不是输出int类型的吗,这也能输出?也能输出!这就是为了什么说printf没有类型检查的问题
所以就算能输出,并不代表你的程序就能输出对,就没错。
看这段文字可能主要问题并不是在说printf的错误,主要是在谈论调试的问题,中国一般大学是不会教有关调试的东西,这也是一个很可惜,很可悲的地方,其实只要知其然,也知其所以然,无论用什么函数输出,都并没问题的。
我觉得这篇文章可能是在批评的printf的没有任何检查错误的能力吧,就是说没有类型检查,例如
char c = 'a';
printf("%d",c);
这个你说能输出吗?能输出,不过你又会问,变量是char类型的,printf的输出符是%d,%d不是输出int类型的吗,这也能输出?也能输出!这就是为了什么说printf没有类型检查的问题
所以就算能输出,并不代表你的程序就能输出对,就没错。
看这段文字可能主要问题并不是在说printf的错误,主要是在谈论调试的问题,中国一般大学是不会教有关调试的东西,这也是一个很可惜,很可悲的地方,其实只要知其然,也知其所以然,无论用什么函数输出,都并没问题的。
2015-11-10 · 知道合伙人教育行家
关注
展开全部
printf函数的一般格式是: printf(格式控制,输出表列)
printf函数调用的一般形式
printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
“%d”表示按十进制整型输出;
“%ld”表示按十进制长整型输出;
“%c”表示按字符型输出等。
例如:
//参考代码如下:
//参考代码如下:
#include<iostream>
#include <stdio.h>
using namespace std;
int main(){
int a=88,b=89;
printf("%d %d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d",a,b);
return 0;
}
/*
运行结果:
88 89
88,89
X,Y
a=88,b=89
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%是代表输出的格式,d是代表整形
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他说这话的意思是学学程序调试技巧吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询