我感觉这段C语言代码有问题,为什么编译没错啊? 这段C语言代码为什么编译没错,运行出错。

\u8fd9\u6bb5C\u8bed\u8a00\u7a0b\u5e8f\uff0c\u4e3a\u4ec0\u4e48\u7f16\u8bd1\u6ca1\u95ee\u9898\uff0c\u4f46\u8fd0\u884c\u51fa\u95ee\u9898\u4e86\uff0c\u9519\u5728\u54ea\uff1f

\u56e0\u4e3a\u6ca1\u6709max\u51fd\u6570\u7684\u5b9a\u4e49\uff0c\u53ea\u6709\u58f0\u660e\uff0c\u7f16\u8bd1\u65f6\u7f16\u8bd1\u5668\u53ea\u77e5\u9053\u4f60\u8ddf\u5b83\u201c\u8bf4\u201d\u6709\u8fd9\u4e48\u4e00\u4e2a\u51fd\u6570\uff0c\u5b83\u201c\u76f8\u4fe1\u201d\u4f60\uff0c\u7f16\u8bd1\u901a\u8fc7\u4e86\u3002\u4f46\u662f\u6267\u884c\u7684\u65f6\u5019\u627e\u4e0d\u5230

while(flag++<500) \u5faa\u73af500\u6b21
\u6ee1\u8db3if((a[i]!=0)&&(a[i]+temp=0))
\u6761\u4ef6\u7684\u6709\u591a\u5c11\u6b21\uff1f\u5982\u679c\u8d85\u8fc760\u6b21\uff0c\u6bcf\u6b21\u90fdt=t+1\u7684\u8bdd\uff0c\u4f1a\u5bfc\u81f4
b[t] = i\u51fa\u73b0\u6570\u7ec4\u8d8a\u754c\u3002

1、首先,编译没错误,表明你程序没有语法错误,但并表示程序正确,因为语法正确,但你程序所要实现的功能还不一定正确
2、if(mink != i) //如果a[i]元素不是r[i]~r[n-1]中的最小元素,则交换a[mink],a[i]
{
int t;
t = r[i]; r[i] = r[mink]; r[mink] = t;
}
这段代码中,因为在循环体内,你认为t被多次定义,这是不正确的,因为t是本段程序中地局部变量,本段程序进入时,定义t,但结束时,t释放了,等下一次再进入时,重新定义的t,和原来的就没有关系了,虽然名称一样,但计算机中认为是一个新变量,而且每次用完就释放,系统并不会出现问题
你可以简单验证,在本段代码后面再用t,是不可以的

这最后t被多次定义为int型,可为什么编译没错啊------这话说得不对。全文才有这一处啊,怎么是“多次定义”呢?写在循环体内的定义,它不是“多次定义的”。请看下面的程序,它始终是同一个变量。



编译的软件只要没有逻辑上的问题的话,能编译通过就可以编译的,只会检查你的语法错误,不会考虑你的代码逻辑有没有问题。

可能翻译是对的吧,你可以仔细的再看看,有时候翻译也不是万能的

每次进入代码块都是一个新的局部变量

  • 鐪嬫垜杩欏皬娈礳璇█浠g爜鍝敊浜?
    绛旓細绗竴 scanf鏀规垚scanf_s 绗簩 澧炲姞澶存枃浠 include <stdlib.h>
  • C璇█,涓轰粈涔堟垜鐨勭▼搴浠g爜涓嶈,鍝噷閿欎簡?
    绛旓細鎮ㄥソ锛屽緢楂樺叴鍥炵瓟鎮ㄧ殑闂銆傚湪C璇█涓紝鍒嗗彿浠h〃璇彞缁撴潫鐨勬爣蹇楋紝鎵浠ュ彧鏈夊綋纭畾涓涓唴瀹归渶瑕佺粨鏉熸椂锛屾墠鑳界敤鍒嗗彿銆傛偍鐨勭▼搴忎腑for璇彞鍚庨潰鍑虹幇浜嗕竴涓垎鍙凤紝浣嗘槸娌℃湁浠讳綍鐨勫唴瀹广傞偅涔堝氨琛ㄧず褰撴弧瓒杩欎釜for璇彞鏃讹紝浠涔堥兘涓嶅仛銆傛垜鎯虫偍鐨勫垵琛疯偗瀹氫笉鏄繖涓剰鎬濈殑銆傛牴鎹墠鍚庢枃鐨勭悊瑙o紝涓汉寤鸿鎮ㄦ妸杩欎釜鍦版柟鐨勫垎鍙...
  • c璇█ 璇烽棶鎴戣繖娈典唬鐮鍝嚭閿欎簡
    绛旓細include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc,char *argv[]){int i;char n[10][3];;for(i=0;i<10;i++){scanf("%c%c",&n[i][0],&n[i][1]); /*姣忎袱涓瓧绗︿綔涓轰竴涓簩缁存暟缁*/getchar();n[i][2]='\0';}for(i=0;i<10;i++) ...
  • C璇█ 浠g爜 璇烽棶杩欐绋嬪簭鏈変粈涔闂?缂栧埗鍑芥暟,鍏跺姛鑳芥槸鍦╢loat绫诲瀷涓缁...
    绛旓細include <stdio.h>#define N 100int main(){ float max,min,a[N]; int n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%f",a+i); for(max=min=a[0],i=1;i<n;i++) { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i];...
  • C璇█闂!鎴戣繖涓唬鐮鍝噷閿欎簡,杈撳嚭鐨勬椂鍊欐绘槸鏈夐棶棰
    绛旓細"%d",&k); for(i=0;i<6;i++) { if(a[i]<=k&&k<=a[i+1]) { for(j=5;j>=i+1;j--) a[j+1]=a[j]; a[i+1]=k; break; } } for(i=0;i<=6;i++) printf("%d ",a[i]); return 0;} 鐪嬩簡浣犵殑浠g爜锛浣犲簲璇ユ槸鎯冲疄鐜板惊搴忚〃鐨勬彃鍏ュ惂銆
  • C璇█ 浠g爜 璇烽棶杩欐绋嬪簭鏈変粈涔闂?搴旇鎬庝箞鏀?缂栧啓涓涓嚱鏁版妸瀛楃涓瞫...
    绛旓細鎴戠殑 C璇█ 浠g爜 璇烽棶杩欐绋嬪簭鏈変粈涔闂?搴旇鎬庝箞鏀?缂栧啓涓涓嚱鏁版妸瀛楃涓瞫鍊掔疆鍚庢帴鍒板瓧绗︿覆t涔嬪悗銆 棰樼洰鎻忚堪缂栧啓涓涓嚱鏁皏oidStrRecCat()鎶婂瓧绗︿覆s鍊掔疆鍚庢帴鍒板瓧绗︿覆t涔嬪悗銆備富鍑芥暟璋冪敤浠ヤ笂瀛愬嚱鏁,灏嗗瓧绗︿覆abc鍊掔疆浠ュ悗鎺ュ埌瀛楃涓瞕ef涔嬪悗,杈撳嚭缁撴灉涓:defcba銆傝緭鍏ヨ緭鍏ヤ袱琛,姣忚杈撳叆... 棰樼洰鎻忚堪缂栧啓涓涓嚱鏁皏...
  • 鐪嬬湅杩欐c璇█鏄笉鏄鐨,涓嶅璇峰仛淇敼璋㈣阿
    绛旓細b=30;sum=a+b;printf("%d\n",sum);for(i=50;i<=51;i=i+1)//;涓嶈 printf("%d\n",i);} 杩欐浠g爜鐨闂鏈1銆佹瘡琛岀粨鏉熻鏈夛紱 2銆佸畾涔夎鏀惧湪鍓嶉潰 3銆佸惊鐜悗闈笉鑳芥湁锛 4銆佹眰鍜岃鍏堟妸鍜岃祴涓0 5銆佹牸寮忎笉姝g‘ 6銆佷功鍐欓敊璇 鎴戣寰楄繖鍍忔槸涓変釜棰樼洰銆傛斁鍒颁竴璧凤紵锛燂紵
  • C璇█璇烽棶杩欐浜ゆ崲x銆亂鍊肩殑浠g爜鏈浠涔堥敊璇?杩愯浜嗘棤娉曟樉绀虹粨鏋淿鐧惧害...
    绛旓細淇敼浣嶇疆1澶勶細鎶 change(*p1,*p2);鏀逛负 change(p1,p2);鍥犱负瀹冪殑褰㈠弬瀹氫箟鐨勬槸鎸囬拡绫诲瀷锛岄渶瑕佹寚閽堝艰岄潪鎸囬拡鎵鎸囧悜鐨勫 淇敼浠g爜鍙婅繍琛岀粨鏋滄埅鍥 浠g爜杩界瓟闄勪笂
  • 鏉ュ府鎴戠湅鐪C璇█杩欐浠g爜鏈閿欏悧?缁撴灉鏄粈涔堝浘妗?
    绛旓細绗簩涓猣or寰幆濡傛灉鏄痠++灏辨槸姝诲惊鐜紝濡傛灉鏀逛负j++鏄竴涓彵褰
  • C璇█,鎴戠殑浠g爜鏄繖鏍,涓嶇煡閬撳摢閲鏈夐棶棰,寰椾笉鍒扮瓟妗堝晩,璇峰ぇ渚犵湅鐪
    绛旓細3锛 鍏跺疄浣犺繖涓畻娉曞緢娴垂鏃堕棿锛 鍥犱负棰樼洰涓粰浣犱簡0<=ai<=100锛岃繖涓鏉′欢锛屼綘鍙互鑰冭檻璁℃暟鎺掑簭銆傚疄鐜拌捣鏉ヤ篃姣旇緝绠鍗曘備笅闈㈢▼搴忕殑鏄椂闂存笎杩涘害鏄 n锛 鑰屾帓搴忔柟娉曟槸 n^2 include <stdio.h> int main(){ int n;int a[1000], b[100] = {0};int i;int c = 0, d;int max, min;scanf("...
  • 扩展阅读:扫一扫题目出答案 ... c语言代码正确为啥还错 ... c语言必背100代码 ... c语言中猴子吃桃子n天 ... 最浪漫的编程代码可复制 ... 用来骂人的c语言代码 ... 编程必背100个代码 ... 为什么中文不能写代码 ... 最简单的编程代码表白 ...

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