如果在写C语言时,代码没错,但是结果总错是什么原因?
我想你要表达的是,编绎时,没显示出错,但就是结果错了。要细致地找原因。
根据我以往的经验,原因有以下几点。
1,内存没有释放。
用new,malloc等分配内存,而在结束时来释放,频繁调用,系统崩溃。
或者根本没使用new或malloc,在使用内存时异常。
2,变量与地址用错。
char *p;
char cp
第一个p指地址,在程序中用错。
3,画笔CPen,CStatic等未恢复
如:oldpen=pdc一>SelectObject(&m_pen);
在结束,没有pdc一>SelectObject(oldpen);
导致颜色混乱。
4,中断使用不当,或者回调callback函数使用不当.
5,c语言对变量类型有严格要求,unsigned与signed区别还是很大的,详细检查函数原型。
6,最后检查算法,框图。是否基本算法有误。这个很难做。相信大家都很自负,坚信算法没错。对照数学算法与你的程序算法是否一致。
7,浮点运算。相信大家认为1.0十1.0=2.0无疑。如果double与其它变量转换出问题,没准是这样的结果:
1.0十1.0=1.9999999999......
错误有两种:语法错误和逻辑错误。
前者,编译过程中编译器会报错。
后者,就是程序有错。例如,c语言不做越界检查,数组越界不报错,但结果不正确。还有未初始化就引用值,等等。
所以你的问题本身就是错误,先设定自己没错,再问是谁的错。
软件工程:没有错误是不可能的,唯一不变的就是错误本身。
出了错。先得怀疑一切,一步步排除错误,而不是坚持自己没错。
写c语言的时候,如果代码没错,这只能说明语法没有出错,直接导致的结果就是能编译通过,并不意味着执行的结果就是正确的。影响c语言代码执行结果的因素非常多。
一、指针的不正确运用;
二、变量精度问题。char,int,unsigned int,long ,float等,如果变量精度使用不正确,也会影响运算结果;
三、运算符的应用不正确。例如除,取余的区别;
四、正负符号位;
五、运算符的优先级使用;
六、编译器不同。各种编译器也可能造成结果不一致;
C语言虽然是一门比较简单的语言,但是要掌握这些细节,其实并不容易。
很高兴回答答主的问题,希望我的回答对答主有帮助。
根据您的描述,首先排除您的代码语法上出现错误,因为这种错误在代码编译时,编译器就会报错,这种错误相对容易好找。
然后就是查找代码逻辑上的错误,将自己的构思通过画流程图展示出来,然后将程序运行的流程和自己的构思流程对照是否吻合。
之后再查询字段的数据类型是否正确,比如如果存储类型为小数时,必须定义为float或double类型,否则显示结果肯定跟预期的完全不一样。
最后如果还是程序运行错误,那么恭喜你,发现了编译器的BUG了!🤫
你写的代码,如果你觉得你的代码没错,但是运行出错了,可以肯定的告诉你,说明你的知识还不够,可能是语言层面,可能是逻辑问题,可能是编译优化,可能是操作系统相关,反正一句话就是在你有限的知识体系内,根本不知道问题所在,所以才有此疑问。把你的错误放到stackoverflow上一查就出来了。相信我,你不是第一个遇到同样问题的人。
计算机等级考试二级c语言设计题是怎么判分的?
按操作到哪一步来给分。如果有out.dat文件,将该文件和标准答案的out.dat文件对比,看相符的比例是多少而给分,如果完全相同则是100分,如果没有out.dat文件,则比较考生编写的代码和标准答案的代码的相符情况,按相符度给分。全国计算机等级考试(NationalComputerRankExamination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。
c语言。x与x!分别表示什么意思?
直接上答案!
“c语言中只有!x没有x!,!x的意思就是x!=0。 !x的意思就是x!=0;当X=0时执行while循环; !即取反,当X!=0时不执行;若x=0,则!x非零; 若x不等于零,则!x=0;一般用if(!x)来做判断式。
拓展:C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

