為什麼printf輸出為2,,為什麼第二個printf輸出為2,3,

時間 2022-04-29 22:55:15

1樓:匿名使用者

大括號中的變數是臨時開設的,即使與外面的變數重名但也不是同一個變數,大括號結束後,這些變數被捨棄,大括號中凡是用到臨時變數的,不會去訪問外面同名變數。

a=3,b=2,c=1;這些變數是main函式定義的

c-=++b; 即b++; [a=3,b=3,c=1], c-=b;[a=3,b=3,c=-2]

b*=a+c; 即b*=1;[a=3,b=3,c=-2]

大括號新開臨時變數b和c,簡便起見,我們可以新起名bb和cc以免自己搞混, 大括號中凡是用到b的都改成bb,用到c的改成cc

bb=5,cc=12[a=3,b=3,c=-2,bb=5,cc=12]

cc/=bb*2; [a=3,b=3,c=-2,bb=5,cc=12/(5*2)=1]

a-=cc;[a=2,b=3,c=-2,bb=5,cc=1]

printf輸出a,bb,cc:2,5,1

a+=--cc;即cc--;[a=2,b=3,c=-2,bb=5,cc=0], a+=0

printf輸出a,b,c:2,3,-2

2樓:鉞森莉

本題主要考察變數的作用域問題。

第一個printf語句中變數b和c的作用域只在當前{}內,故應輸出2,5,1。

第二個printf語句中變數a的作用域為整個main函式,而變數b和c的作用域則為main函式的前三句及當前printf語句這四句。所以

c-=++b c=c-(++b)=1-3=-2b*=a+c b=b*(a+c)=3*(3-2)=3a-=c a=a-c=3-1=2

a+=--c a=a-(--c)=2-0=2故第二個printf輸出為2,3,-2。

為什麼第二個printf沒有輸出

3樓:聽不清啊

scanf語句書寫有錯,應該是:

下面的同樣需要改正)

這是要等輸入第一個實數的實部、虛部後,再輸出第二條提示資訊的。

4樓:風若遠去何人留

在第一個printf下面是scanf

程式在等你輸入呢。

比如輸入1.1 2.2

然後就會輸出第二行,並等你輸入下一個scanf的資料。

再輸入一組,比如3.3 4.4

就可以輸出結果了。

5樓:你叫我來幹啥

一個printf後面的scanf不是輸入請求嗎?你需要輸入才會往下走啊!

為什麼如下的c程式,執行時第2個printf會輸出兩遍?

6樓:

上述問題和io輸入機制有關,當你按下enter停止輸入時候,輸入快取中還存在著一個enter字元。只需清除快取中的資訊即可。

將以下語句插入scanf之後,即可

fflush(stdin);

有以下程式,為什麼2個printf輸出的結果不一樣

為什麼第二次printf輸出的值和第一次的不一樣?

7樓:匿名使用者

while語句解析如下:

n <=1; //n is 0

n++; // n is 1

print...; // n is 1;

// 回到迴圈條件檢查

n++<= 1; // 跳出迴圈,執行n++, 結束後n=2print... // n is 2

8樓:51cto學院

之所以兩次不一樣,那是因為前面那個printf是在while迴圈裡面的,而後面那個printf是while迴圈外面的。

如果是下面這麼寫的,那兩個printf輸出就一樣。

while(n++<=1)

你要注意while迴圈的範圍。

c語言 位域 第二個printf該輸出多少 並解釋為什麼

9樓:風若遠去何人留

a b c的位域分別是2 3 5

所以 對應最小值為1, 最大值分別為3 7 31超過位的值將階段。

賦值依次為

4 15 32

於是a=0 b=7 c=0

為什麼第一個不用printf也能輸出,而第二個不能呢?

10樓:金色潛鳥

第一個,列印語句放在開關語句裡了,滿足某case 就直接列印了。

第二個,開關語句裡只有賦值沒有輸出列印,所以要另加列印語句。

11樓:

第一個用了4個printf(),而第二個只用了1個printf(),怎麼叫第1個不用printf也能輸出?

12樓:迷夢錯亂

是這樣子的,第一個printf的語句比較短,只輸出單個字元,並沒輸出任何變數值.

當a=1則輸出a

a=2就輸出b

a=3就輸出c

a=不等於1,2,3就輸出d

說一下語句

①#include

main()

}不明白繼續問我,望採納,謝謝

13樓:亞馬遜選品管家

都有用printf啊。

14樓:咕咕啃骨頭

第一個,少了好多break啊- -

15樓:匿名使用者

你兩個不都用了printf?

php輸出echo5 11 5為什麼輸出為

無情的香菜 1.字串與數字運算,字串會自動轉化成數字,再做運算。2.字串轉化成數字 從字串的第一個字元起,如果第一個是數字,向右直到不是數字為止,如 123abc 轉化為123 如果第一個不是數字,直接轉化為數字0。3.你的第一個echo相當於 5 1 1 5 字串轉化成數字後就是5 5,第二個同理...

int a 2 printfu ,a 輸出為 65534 為什麼?麻煩解釋一下!!謝謝

風若遠去何人留 出現這種情況,是用的16位編譯器.int佔2位元組.賦值int a 2 補碼形式儲存,實際儲存為0xfffe用 u輸出,會轉為無符號數 unsigned int 也就是輸出0xfffe為原碼的正數值,即65534 三笑牌拳頭 printf u a 中u是unsigned int的意思...

C語言為什麼我的結果輸出不出來,C語言 為什麼輸入之後沒有沒有輸出結果?

p a 這是什麼賦值方法?字串之間的賦值要用memcpy,memcpy p,a,100 如果只是單純的 p a的話,p是char 型別,p就是char型別,而a是一個int 型別,即一個地址,地址一般使用32位資料來儲存 64位機器使用64位資料儲存 這麼賦值的話,p並不是a的地址,而是a的地址中的...