我在编写C语言代码的时候,有时候代码会有一些逻辑上的错误,就是代码可以运行,但得不到正确的结果. c语言中,我觉得goto语句很好用啊,在做一些判断时很实用,...

\u4ee5\u4e0b\u662f\u7528c\u8bed\u8a00\u5b9e\u73b0\u5224\u65ad\u9759\u6001\u94fe\u8868\u662f\u5426\u9012\u589e\u7684\u4ee3\u7801\uff0c\u4f46\u8fd0\u884c\u662f\u51fa\u73b0\u903b\u8f91\u9519\u8bef\uff0c\u6211\u89c9\u5f97\u662f\u4e0d\u662f++list\u51fa\u4e86\u95ee\u9898\uff1f\uff1f

\u95ee\u9898\u5c31\u51fa\u5728 [++list] \u8fd9\u4e00\u53e5\u4e2d.
\u4e0d\u8fc7\u4e0d\u662f\u81ea\u52a0\u8fd0\u7b97\u6709\u95ee\u9898, \u800c\u662f\u6bd4\u8f83\u8fd0\u7b97\u4e2d, \u4e24\u4e2a\u5b57\u8868\u8fbe\u5f0f\u7684\u8ba1\u7b97\u987a\u5e8f\u7684\u95ee\u9898.
[list->data >= (++list)->data]
\u5982\u679c\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u662f\u4ece\u5de6\u5f80\u53f3\u8ba1\u7b97\u7684, \u90a3\u7ed3\u679c\u80af\u5b9a\u6ca1\u95ee\u9898. \u4f46\u5b83\u5176\u5b9e\u662f\u5148\u8ba1\u7b97 >= \u53f7\u53f3\u8fb9\u7684\u5f0f\u5b50, \u540e\u8ba1\u7b97\u5de6\u8fb9\u7684. \u6240\u4ee5, \u4e24\u6b21\u63d0\u53d6\u7684, \u90fd\u662f list \u81ea\u52a0\u4e4b\u540e\u7684\u503c. \u4e8c\u8005\u80af\u5b9a\u76f8\u7b49\u4e86.

goto\u8bed\u53e5\u4e5f\u79f0\u4e3a\u65e0\u6761\u4ef6\u8f6c\u79fb\u8bed\u53e5\uff0c\u5728\u7ed3\u6784\u5316\u7a0b\u5e8f\u8bbe\u8ba1\u4e2d\u4e00\u822c\u4e0d\u4e3b\u5f20\u4f7f\u7528goto\u8bed\u53e5\uff0c \u4ee5\u514d\u9020\u6210\u7a0b\u5e8f\u6d41\u7a0b\u7684\u6df7\u4e71\uff0c\u4f7f\u7406\u89e3\u548c\u8c03\u8bd5\u7a0b\u5e8f\u90fd\u4ea7\u751f\u56f0\u96be\u3002
1968\u5e74\uff0cEdsger Wybe Dijkstra \u9996\u5148\u63d0\u51fa\u201cGOTO\u8bed\u53e5\u662f\u6709\u5bb3\u7684\u201d\u8bba\u70b9\uff0c\u5411\u4f20\u7edf\u7a0b\u5e8f\u8bbe\u8ba1\u65b9\u6cd5\u63d0\u51fa\u4e86\u6311\u6218\uff0c\u4ece\u800c\u5f15\u8d77\u4e86\u4eba\u4eec\u5bf9\u7a0b\u5e8f\u8bbe\u8ba1\u65b9\u6cd5\u8ba8\u8bba\u7684\u666e\u904d\u91cd\u89c6\u3002
\u4e3b\u8981\u7406\u7531\u662f\uff1aGOTO\u8bed\u53e5\u4f7f\u7a0b\u5e8f\u7684\u9759\u6001\u7ed3\u6784\u548c\u52a8\u6001\u7ed3\u6784\u4e0d\u4e00\u81f4\uff0c\u4ece\u800c\u4f7f\u7a0b\u5e8f\u96be\u4ee5\u7406\u89e3\uff0c\u96be\u4ee5\u67e5\u9519\u3002\u53bb\u6389GOTO\u8bed\u53e5\u540e\uff0c\u53ef\u76f4\u63a5\u4ece\u7a0b\u5e8f\u7ed3\u6784\u4e0a\u53cd\u6620\u7a0b\u5e8f\u8fd0\u884c\u7684\u8fc7\u7a0b\u3002\u8fd9\u6837\uff0c\u4e0d\u4ec5\u4f7f\u7a0b\u5e8f\u7ed3\u6784\u6e05\u6670\uff0c\u4fbf\u4e8e\u7406\u89e3\uff0c\u4fbf\u4e8e\u67e5\u9519\uff0c\u800c\u4e14\u4e5f\u6709\u5229\u4e8e\u7a0b\u5e8f\u7684\u6b63\u786e\u6027\u8bc1\u660e\u3002
\u540e\u6765\u4ece\u7406\u8bba\u4e0a\u8bc1\u660e\u4e86\uff1a\u4efb\u4f55\u7a0b\u5e8f\u90fd\u53ef\u4ee5\u7528\u987a\u5e8f\u3001\u5206\u652f\u548c\u91cd\u590d\u7ed3\u6784\u8868\u793a\u51fa\u6765\u3002\u8fd9\u4e2a\u7ed3\u8bba\u8868\u660e\uff0c\u4ece\u9ad8\u7ea7\u7a0b\u5e8f\u8bed\u8a00\u4e2d\u53bb\u6389GOTO\u8bed\u53e5\u5e76\u4e0d\u5f71\u54cd\u9ad8\u7ea7\u7a0b\u5e8f\u8bed\u8a00\u7684\u7f16\u7a0b\u80fd\u529b\uff0c\u800c\u4e14\u7f16\u5199\u7684\u7a0b\u5e8f\u7684\u7ed3\u6784\u66f4\u52a0\u6e05\u6670\u3002
\u6240\u4ee5\u76ee\u524d\u662f\u4e0d\u63a8\u8350\u4f7f\u7528goto\u7684\u3002

新手最郁闷的事情莫过于程序可以运行但是却得不到自己的结果了吧。
老手最郁闷的事情莫过于新手问为什么我的程序可以运行但是却得不到自己的结果了吧。
比如:
你天天用操作系统。
如果你用过Windows98就应该知道那时候系统经常崩溃的。
但是微软设计的时候,不会把它故意设计成每小时或者没几天崩溃几次吧。
不崩溃的时候,程序不也是正常运行么。
为什么得不到自己想要的结果:
那是因为你的程序根本就没有写对
比如:
老师让你输出:1
你写个程序输出:2
你的代码当然编译不会出错。
而且可以很好的运行,但是结果就是2.
永远都不会是1,因为你就让他输出的2,结果怎么会是1呢。
开发人员都知道:
再也没有比修改语法错误再简单的了
直接看看编译器报的错,看看第几行,修改。OK。。太简单了
逻辑错误就得调试了
这个世界上只有调试不开发的。没有开发不调试的。
不会debug。永远都不是程序员。
你不可能一下子就得到自己想要的结果。
尤其是比较大的程序。
gdb..学习它,使用它,爱上它。
(gdb *nix平台的。如果,而且我猜你用的是Windows,Windows用vs不错)

调试。
一步一步调。
运行一步,看看期望结果对不对。
————————
懒汉调试法:
程序中间打个断点,看结果对不对:
对:剩余部分中间打个断点
不对:前面的代码中间打个断点

学会调试,一般的逻辑问题调试了就可以找到解决方法了。可以自己到网上找找调试的方法,实在不会就让别人检查下程序,比如发到c语言吧或者cQQ群里求助

学会设置断点 跟踪数据 跟踪变量 一步步调试 你会找到不是想要的那个变量 然后在附近查看逻辑上的问题

  • C璇█涓悓涓涓▼搴忎笉鍋氫慨鏀逛负浠涔堟湁鏃跺欒繍琛屾垚鍔,鏈夋椂鍊涓嶈兘鎴愬姛鍛?
    绛旓細搴旇鏄袱绉嶇幆澧冧笅淇濆瓨鐨婧愪唬鐮佺殑鏍煎紡鏈夊紓銆傛渶濂芥壘涓笓涓氱殑鏂囨湰缂栬緫鍣ㄦ潵缂栬緫婧愪唬鐮侊紝鐒跺悗鍐嶇敤TC鏉ョ紪璇戙傛瘮濡傝ULTRAEDIT銆傝繖鏍蜂細鐪佸幓寰堝楹荤儲銆備綘涔熷彲浠ユ妸杩欎釜宸ュ叿鎵撻犳垚鑴辩TC鐨処DE鐜鐨勭紪杈戯紝缂栬瘧宸ュ叿銆傛垜鐩墠灏辨槸鍦ㄥ畠涓嬮潰缂栬緫鍜岀紪璇C绋嬪簭鐨勩
  • 姹傚姪澶х涓轰粈涔堟垜鐢c璇█缂栧啓鐨勭▼搴忚繍琛鐨勬椂鍊鏄剧ず绋嬪簭鍋滄宸ヤ綔?_鐧惧害...
    绛旓細scanf璇彞鍜宲rintf璇彞閮芥湁閿欒銆傛纭殑浠g爜濡備笅锛歴canf("%lf",&fRadius);printf("鍦嗙殑闈㈢Н涓: %lf\n",fResult);鏄%lf锛岃屼笉鏄%If锛宻canf璇彞涓紝,&fRadius鍦""鍚庨潰锛岃屼笉鏄湪""閲岄潰銆
  • 涓轰粈涔堢敤C璇█缂栧啓浠g爜,鍙槸鍗村嚭鐜颁簡寰堝閿欒?鑳藉府蹇欑湅鐪嬪摢閲岄敊浜嗗悧,鎬...
    绛旓細鎶妚oid delay(uint z)鏀规垚void delay(uint z);銆
  • 鎴戞兂闂竴涓,鎴缂栧啓鐨凜璇█绋嬪簭缂栬瘧鏃惰佹槸鍑虹幇 no relevant changes de...
    绛旓細褰撶▼搴忓唴瀹规病鏈変换浣曞彉鍖栵紝鍐嶆缂栬瘧/閾炬帴 灏变細鍑虹幇 鈥滄病鏈夋帰娴嬪埌绋嬪簭鏈夊彉鍖栤 淇℃伅銆傝繖涓嶇畻閿欒锛屼篃涓嶆槸璀﹀憡锛屽彧鏄俊鎭紝鍙互涓嶅幓绠″畠锛屽拷瑙嗗畠銆傚鏋滀綘缁欑▼搴忓姞涓涓┖鐧斤紝瀹冨氨璁や负鏈夊彉鍖栵紝缂栬瘧/閾炬帴 灏变笉浼氬嚭鐜拌繖涓俊鎭
  • 涓轰粈涔C璇█缂栧啓鐨勭▼搴忚繍琛屾椂闂竴涓嬪氨娌′簡?
    绛旓細C璇█缂栧啓鐨勭▼搴忚繍琛屾椂闂竴涓嬪氨娌′簡鏄缃敊璇犳垚鐨勶紝瑙e喅鏂规硶涓猴細1銆佹垜浠互鏈缁忓吀鐨凥ELLO WORLD绋嬪簭涓轰緥銆2銆佸綋鎴戜滑鍐欏畬杩欎釜绋嬪簭 缂栬瘧瀹屾垚鍚庡崟鍑诲乏涓婅鐨勫徆鍙疯繍琛 鍙互鐪嬪埌涓鍒囨甯 鎸変笅浠绘剰鎸夐敭鍚庣獥鍙f墠浼氭秷澶便3銆佷絾鏄垜浠幓鐢熸垚鐨勭洰褰曚笅闈㈡壘鍒拌繖涓狤XE鏂囦欢銆4銆佸弻鍑昏繍琛屽嵈鍙戠幇鏈変釜绐楀彛涓闂岃繃銆傘
  • vscode c璇█娌℃湁寰幆浣撶殑寰幆璇彞,璇彞缁撴潫鍒嗗彿琚崲琛岀殑闂?
    绛旓細4. **娉ㄦ剰浠g爜椋庢牸**锛鍦ㄧ紪鍐浠g爜鏃讹紝娉ㄦ剰淇濇寔鑹ソ鐨勪唬鐮侀鏍笺備緥濡傦紝浣跨敤缁熶竴鐨勭缉杩涙柟寮忋佸湪鍚堥傜殑浣嶇疆鎹㈣銆佷繚鎸佽鍙ョ殑瀹屾暣鎬х瓑銆傝壇濂界殑浠g爜椋庢牸涓嶄粎鍙互鎻愰珮浠g爜鐨鍙鎬э紝杩樺彲浠ュ噺灏戝洜涓烘牸寮忛棶棰樺鑷寸殑閿欒銆傛讳箣锛屽鏋滃湪VSCode涓缂栧啓鐨凜璇█浠g爜鍑虹幇浜嗏滄病鏈夊惊鐜綋鐨勫惊鐜鍙モ濇垨鈥滆鍙ョ粨鏉熷垎鍙疯鎹㈣...
  • C璇█鐢╢or璇彞杈撳叆5涓暟骞舵壘鍑烘渶澶ф渶灏忓,杩愯鍑烘潵鏈夋椂鍊欐纭,鏈夋椂鍊...
    绛旓細max=num[0]; min=num[0]; for ( i=1;i<5;i++ ) { if ( max<num[i] ) max=num[i]; if ( min>num[i] ) min=num[i]; } printf("max=%d min=%d\n",max,min); return 0;}娉ㄦ剰锛屽湪鏁扮粍涓紝涓嬫爣鐨勮捣濮嬫槸浠0寮濮嬬殑锛宨nt num[...
  • 鎴戠幇鍦ㄥ湪瀛C璇█缂栫▼,鍙槸鎴戠紪鍐欑殑绋嬪簭鍦鎴戠殑鐢佃剳鑰佹槸杩愯涓嶄簡,閿欒鏄...
    绛旓細鏄洜涓虹紪璇戝櫒鍜岀郴缁熺殑涓嶆敮鎸侀犳垚鐨勶紝濡傛灉鐢▁p鐨勮瘽搴旇灏卞彲浠ヤ簡
  • 鍗曠墖鏈C璇█缂栬瘧閿欒:requires ANSI-style prototype
    绛旓細鐞嗚В杩欎竴鐐瑰緢閲嶈锛屽洜涓哄崟鐗囨満鐨缂栫▼鏈夋椂闇瑕佸祵鍏ユ眹缂栬瑷锛岀壒鍒槸鍦ㄥ鐞嗙壒瀹氱‖浠舵帶鍒舵垨瀵圭▼搴忓ぇ灏忓拰杩愯閫熷害鏈変弗鏍艰姹傜殑椤圭洰涓傛眹缂栬瑷鍏佽鐩存帴鎿嶄綔纭欢锛屽瀵勫瓨鍣ㄣ佺鍙g瓑锛屽浜庢ц兘鏋佽嚧鐨勫簲鐢ㄨ嚦鍏抽噸瑕併傜劧鑰锛孋璇█閫氬父鐢ㄤ簬缂栧啓鏇寸畝娲佺殑浠g爜锛鍏跺簳灞傛墽琛岀殑鏄簩杩涘埗鏈哄櫒鐮併傝閬垮厤杩欑被閿欒锛岀‘淇濅綘鐨凜...
  • 鎴戠殑vs2008 缂栧啓c璇█婧愪唬鐮佺殑鏃跺涓鐩存彁绀烘枃浠跺寘鍚お澶 鎬庝箞澶勭悊_鐧惧害...
    绛旓細include 鎸囦护鐨勫祵濂楀お娣便傚祵濂楁寚浠ゅ彲浠ュ寘鎷墦寮鐨勬枃浠躲傚寘鍚寚浠ょ殑婧愭枃浠剁畻浣滀竴涓枃浠躲傚湪include鏂囦欢鍓嶅姞涓婇缂栬瘧澶 ifdef xxx_H include xxx.h enddef 闃叉閲嶅寮曠敤銆傚叿浣撳彲浠ュ療鐪婱SDN C1014鐨勮В閲 銆
  • 扩展阅读:编程必背100个代码 ... 生日编程代码免费复制 ... 免费代码生成器 ... c++编程跳动爱心代码 ... 吓人的编程代码 ... 代码大全 ... 爱心代码编程可复制 ... 黑客编程代码大全 ... 初学编程必背50个 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网