-
首先,y[j++]= x[i]; 等價於 y[j]= x[i]; j++;前者只是一種相對緊湊的寫法,這也是後者加法的典型用法。
其次,y[j]-=1怎麼會有語法錯誤,就是用指標y指向的下標j給-1分配元素的值這裡的-符號指的是正負的否定,而不是減法的意思。
第三,-1的意思只是做乙個標記,這個**的意思就是資料結束了,後面沒有資料。 具體而言,請參見 for(i=0; y[i]>=0; i++)printf("% ",y[i]);只要看看環路終止條件,你就應該明白了。 但是,這種做法是相當垃圾的,不建議這樣做。
-
Y[j++] 實際上意味著,例如,現在 j=0,那麼這裡是 y[0]=x[i]; 然後迴圈再次重複,此時 0++ 變為 1,這裡變為 y[1]=x[i]; 就這樣一直持續到最後。 實際上,它是一種自動換檔操作。
這不是語法錯誤,-1(“減一”是乙個常數) 1 相當於最後乙個標記,表示陣列已經完成,你看 for(i=0; y[i]>=0; i++)printf("% ",y[i]);
裡面的條件是 y[i]>=0,如果你加上乙個小於 0 的 -1,則意味著陣列結束了。
希望對您有所幫助!
如果你不明白,你可以問!
-
首先,因為y[i++]是後加法,所以先計算後自加; 第二句話沒有語法錯誤,即 y[i] 給出了 -1,這裡的函式只是乙個簡單的標誌; 第三,change 語句僅用作程式中的儲存值。 實際上,這只是找到平均值然後輸出乙個大於平均值的數字的問題。
-
首先,y[j++] 給 y[j] 賦值,然後賦值給 j++;
第二,應該沒有,最後乙個y[j]的值為-1;
三、好玩(......函式計算平均值,將大於平均值的數字儲存在y中,輸出大於平均值的數字;
-
y[j++]=x[i];相當於 y[j]=x[i]; j++;兩句話。
y[j]=-1;實際上,它是for(i=0; y[i]>=0; i++)printf("% ",y[i]);讓最後乙個 y 小於零,並停止輸出 y。 因為 -1 小於 0
-
自增分為字首自增和字尾自增。 不管是什麼,在自動增量的執行中都有 1 ***,即原始變數的值將增加 1。 例如,int a=1; a++;或 int a=1; ++a;執行後,a==2。
它們之間的區別在於整個自增表示式的值不同。 例如,(a++) 的值是變數 a 在自增之前的值,如上例 (a++)==1 所示。 (++a)的值是變數a自增量後的值,即(++a)==1+1==2。
繫結分為左繫結和右繫結,只有當優先順序相同時,我們才能看繫結,例如表示式 a+b*c+d-e*f,因為乘法優先順序高於加法和減法,所以 a+(b*c)+d-(e*f),並且因為 +- 運算是左組合的,所以只有 a+(b*c)(a+(b*c))+d(a+(b*c)+d)-(e*f), 如果是右連詞,則先 d-(e*f),反之亦然。我在這裡真的看不出有什麼區別,反正結果是一樣的。
但是看到*p++操作就不一樣了,因為*和++操作的優先順序是一樣的,左邊的組合結果是(*p)++,右邊的組合是*(p++)這是很大的區別,而且書中有很多例子,大家可以自己看看。
投射的問題是,如果可以的話,根據需要進行轉換。 例如,float x=;
然後 (int)x==9。 將實數型別轉換為整數是通過截斷小數部分來完成的。
例如,您還可以將整數轉換為字元常量,例如,int a=97; 然後 (char)a=='a',因為字元 A 的 ascll 程式碼為 97。
這就是您要轉換的型別。
-
通俗地說,自增是加1,分為字首自增和字尾自增,字首自增是讓自己加1再用,字尾自增是先用,然後這個原值加1,字尾自減也是一樣。
-
a++ 等價於 a=a+1; 先賦值,再加 1;
a++ 等價於 a=a+1; 先賦值,再減1;
a++ 等價於 a=a+1; 先做加1運算,再賦值;
a++ 等價於 a=a+1; 先做負 1 運算,然後賦值;;
-
a++,a--
a,--aa+=,a-=
都算作自加自減法,具體使用上與普通的+-方法沒有太大區別,只是執行速度更快。