-
分析如下。
第乙個週期。
y=1。 y=((x=3*y,x+1),x-1);
這句話是句法。
首先,很明顯,賦值符號“=”優先於逗號表示式運算子“no”,逗號表示式取最右邊表示式的值。
x=3*y), x+1 這個表示式首先計算x=3*1=3,逗號表示式的值是最右邊x+1的值,也就是4(注意x的值是3)。
y=(4,x-1);如果值為 x-1,則此表示式右側 () 中的逗號表示式為 2
所以 y = 2
第二個迴圈(實際上 x+1 是乙個干擾項,因為逗號表示式有乙個實際上不起作用的點 x+1,y=((x=3*y,x+1),x-1); 可以簡化為y=((x=3*y),x-1)。
y=2 與相同的分析類似。
x=3*2= 6
y=(7,x-1)
y=5 用簡化的y=5x=3*5=15直接分析第三個週期
y=14 不滿足 y<10 迴圈結束。
輸出 x 為 15,y 為 14
上述分析在無 C 執行和實際測量下是可以的
-
#include
#include
void fun (char*p) 接收 str array}main() 的第乙個位址。
islower() 確定它是否為小寫字母,如果為 true,否則為 false p[i-1]=p[i-1]-'a'+'a'如:'b'='b'-'a'+'a'=1+'a'='b'
希望對你有所幫助。
-
1 大家好,a++和++a是自動遞增運算,相當於a=a+1;a--和--a是自減法運算,等價於a=a-1
+a“或”--a“是先增減後參與計算; “A++”或“A--”是先參與計算,再增減。
因此,您的問題 c = 6 * 6 * 6 = 216(在執行語句之前,A 不會增加到 7)。
-
c=6*6*6;
+a“或”--a“是先增減後參與計算;
a++“或”a--“是先參與計算,然後自加自減來記住乙個句子,+在前面遇到,即使++在後面,也可以忽略它,等待當前語句的末尾進行自增量運算。
-
在第乙個問題中,a,p指向s陣列的第乙個位址,即p指向s[0],p->y=s,所以s[0]->y也指向s[0],這句話沒用。 輸出語句 ++p->x, -> 優先順序大於 ++,所以它是 ++ (p->x),p->x 是 1,先加,變為 2,輸出 2
在第二個問題中,b,p 指向 s[1],p->y 指向 s[0],其中 p->x 等價於 s[1]。x,為2; 在 p=p->y 之後,p 指向 s[0],其中 p->x 等價於 s[0]。x,為1; 2 1 應在末尾輸出
-
要解決此類問題,您需要分解表示式才能理解它。
j=(i++)i++)i);
翻譯成乙個單一的語句,它是:
i++;在第乙個括號中。
i++;在第二個括號中。
i;在第三個括號中。
以上是第一組。
i;第乙個 ()+
i;第二個 ()+
上面的兩個是第二組。
根據編譯器的不同,會有不同的結果,但如果你看一下你的值,它屬於以下操作。
第一組以 (3) +3) +4) 執行,編譯器不以從左到右的優先順序執行操作。如果是傳統的 C C++ 操作規則,則應為 (3) + (4) + (6)。
執行第二組後,j = 10。 如果是傳統的C++操作規則,應該是j = 13。
現在我們來談談 i 值:
我執行了三次 i = i + 1 操作,所以:i,最終結果,i = 6。
在這方面,C的規則更加明顯。
步驟1:j = (3++)i++)i);
步驟 2:j = 3 + 4++)i);
步驟3:j = 3 + 4 + 5);
步驟 4:j = 3 + 4 + 6;
第 5 步:j = 7 + 6;
第 6 步:j = 13。
操作的優先順序首先是括號,然後從左到右計算操作。
-
自己讀這本書。
i++,即先使用 i 的值,然後再加自身。
i,是先加1,再用值進行其他運算%d,整數輸出。
自己多讀書,這不難理解。
-
哥哥! 你和我一起玩! 我在程式中執行了它,第乙個結果是 i=6, j=9!! 我說怎麼做錯了!
i++是先計算i,再計算+1,第乙個公式應該是j=3+3+3=9,也就是說只有i=3,最後是+嗯,當然是i+1+1+1=6
-
對於不同的編譯器,這個值似乎並不相同。
-
先加字首再賦值,先賦字尾再賦,所以 i++ 始終是 3,但 ++i 是 4所以 j 是 3+3+4=10
此時,i 的值已指定為 6、3 加 1 加 1 加 1
您可以檢視自動遞增運算子的字首和字尾之間的區別。
-
2+4+1=7 所以這個輸入你至少是 7 位,如果小於 7 位就不會產生結果,所以輸入 x,y 只有兩個 %d 是 %2d 表示 x=12,%d 表示 y=7,所以結果是 19,。
-
我還想知道%*4c是什麼意思。
-
讓我們分解一下:
1)先把0和1234傳給fun函式,因為s2>10,函式被執行下來,s1=4,然後把s1和s2 10(123)再次傳遞給。
有趣的功能。
2)由於s2 10(123)在第二遍的s2<10判斷中是s2,他仍然不能滿足條件,函式向下執行。由於 s1=s1*10+s2%10; S1 變為 43,S2 10 通過 123 10=12,再通過 43 和 12 進行娛樂
3) 12 仍然不能滿足以下條件:根據上述規則,S1 變為 43*10+12%10 為 432,S2 變為 1
4) S2 變為 1 以滿足 if 條件,函式返回 S1*10+S2%10 的值,其中 S1 傳遞 432,S2 傳遞 1,4321
-
在函式迭代過程中,將最後乙個 s1 增加一位(乘以 10),然後新增到這個 s2 的個位數 (s2%10),當 s2 已經是個位時,迭代開始返回。
-
這是乙個遞迴,很容易看出,只看有趣的函式,它的功能是在 s1 之後新增 s2 閃回,所以問題是乙個 4321
-
這顯然是乙個排序問題,經過 si 和 s2 的比較,取大的,所以首先得到的是 4,依次是 3、2、1 等等排序,C 語言教科書上經典的氣泡排序方法,大家可以看看哇! 記得選我。
在 vc++2005 上執行的結果是002222
這種東西在不同的系統裡會得到不同的值,垃圾問題,就不打擾了。 >>>More
引用月份[12][10]; 錯。 如果沒有元素 month[12][10],最多 month[11][9],指標 p 是無用的。 還有刪除所有 +10 級對應的 *。 >>>More
main() [主要函式主程式]。
int i,j,k;【定義整數資料 i,j,k】for(i=1; i<=6;i++) 主迴圈,i 從 1 到 6,增加到 1] for(j=1; j<=20-2*i;J++) 子迴圈,J 從 1 到 20-2*i >>>More