zhixing909090给我来信说Code::Block中单步执行时的问题,我让他/她发来程序。
程序是:
#include <iostream> using namespace std; int main( ) { double r1,r2,r; //定义变量,用来表示待串联的电阻值及并联后的电阻值 cout<<"请输入两个电阻的阻值:"; //输出字符串,作为对“用户”的提示 cin>>r1>>r2; //由用户输入待串联的电阻值 r=r1+r2; //实现计算,将r1+r2的结果赋值给r cout<<"串联后的阻值为:"<<r<<endl; //输出计算结果 return 0; }
他/她说:“老师就是你的那个程序!单步调试,若定义int能通过,但是double通不过!到cin>>死活输不出来!我试了好多遍!我用的是code13.12最新版本!”
我调试,果然如此。但无法解释。如何答复?我不知道。最后,我这样答复。
我试过了,确实如你所言。这是否是Code::Block的一个Bug,我不敢肯定,可以通过邮件反馈一下。
不过,我们可以绕开这样的问题,原则就是不要进入到这个陷阱中去。我提示两个方法:(1)替换:调试中,给变量直接赋值,如你的程序中,将cin>>r1>>r2加上注释,同时写对r1和r2的赋值语句,单步执行能够顺利过去;(2)忽视:通过加断点,跳过cin,而不是机械地一步一步操作。要搞清目标是跟踪过程,而保证输入没有问题,cin完全用不着去step。实际上,即使没有bug,也要适应利用断点,这是一个可以高效的方式。
我解释不了这段错误,就给你提点“避障”的办法,供参考。科学问题,一定要追根问底,而对这类工程中遇见的问题,首要的原则,让事情能做下去。
顺便提code::Block中的另一个问题:当项目所在文件名夹中含有中文、空格时,单步高度无法进行。对策:养成习惯,建文件夹时,按字线开头、数字字母串的一般规范去命名。
存在问题不怕,重要的是找到应对的原则,也是一种选择。
china-pub(正在发售) 卓越网(接受预订) 图灵社区 官方试读本下载 豆瓣 |
==================== 迂者 贺利坚 CSDN博客专栏================= |== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==| |== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==| ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |
时间: 2024-10-07 08:42:58