1樓:匿名使用者
你的情況是:來
while(n++<=1)中是先取n值判斷源後再n++,因此第一次n=0判斷有效,n變為1並執行迴圈體;
第二次n=1判斷仍有效,n變為2並執行迴圈體,第三次n=2判斷無效,n++被忽略。
但實踐中由於編譯器的實現不同,可能導致第三次半段無效時n++未被忽略-理論上是不應該忽略的。所以給的答案是1 2 3。
所以問題可能出在你使用的編譯器上。
我用tc2.0編譯器、tcc編譯器和cygwin下的gcc編譯器執行結果均為:1 2 3。
不知道你用的什麼編譯器?
難怪。這主要是編譯器的問題。 我用vc6.
0測試了,如果debug模式沒有問題,release模式有問題,只有1 2。 我估計是release優化出錯。所以檢視了一下,如果以速度優化,則輸出1 2。
預設模式則跟debug一樣。最小尺寸優化也只輸出兩個。自定義優化跟預設模式一樣。
所以問題出在編譯器及project設定上。
所以正確答案應是三個:1 2 3。
2樓:光明左右二使
你忽略了最後一次,n = 2的時候,還是會計算n++ <= 1的,這個時候 因為n > 1,所以沒有進迴圈(在括號處求的值),但是編譯器還是對n++求了一次值,不然,怎麼知道n++ 已經不符合條件了
3樓:匿名使用者
當n=1時(第二次迴圈),1<=1滿足,那麼n加一,然後執行迴圈體
此時n=2,進入n++<=1中,由於2<=1不成立,應該跳出迴圈啦,但n還要加1的,因為n++<=1是一個語句。此時n=3了。
c語言程式,為什麼這道題的輸出結果是2,3 ??我覺得應該是3和一個隨機數才對啊??
4樓:雙月夜雪
->的優先順序高於++
所以,++p->x 是 ++(p->x)
求大神講解一道C語言程式題,求大神幫解一道C語言程式題,謝謝
輸出結果 4,2,12,11 代表空格 陣列結構如下,例 5是a 1 1 9是a 2 2 11是a 3 1 a 0 a 1 a 2 a 0 1 2 3 a 1 4 5 6 a 2 7 8 9 a 3 10 11 12 p 1 即對p 1 取 即取值 p 1 a 1 a 1 即a 1 0 的地址,所以...
一道c語言題,謝謝,求詳解啊,一道C語言題,謝謝,求詳解啊
我們知道 只要有一個條件是假那麼整個都為假,全部為真才為真。已知c不等於2,4,6所以答案c,d為假。只要一個條件為真那麼整個就為真,全部為假才為假。已知c不等於2,4,6,a答案的三個條件 c 2 c 4 c 6 都不成立,所以a答案為假。b答案若c取值為3那,麼c!5一定為真,因為c只能取一個值...
C語言的一道程式設計題一道C語言程式設計題
include typedef struct pos int right pos pos1,pos pos2,pos pos3 double lengthfun pos pos1,pos pos2 int main pos2 pos3 printf n請輸入第 1個點的座標 t printf n請輸...