C語言printfd na bb a 結果為什麼是30,printfd na bb a也是一樣

2021-04-21 09:55:07 字數 5050 閱讀 1363

1樓:匿名使用者

a-- 我們都知道它bai相等於 a = a - 1 的這個du寫法

那麼 --a 是什麼呢?zhi --a 實際上跟 a-- 的差別不大。

daoa-- 是之後在執內行 --a是之前就已經容

執行a-- 的例子

a = 5;

printf("%d\n", a--); //那麼這個答案應該是5,因為它是之後再執行

printf("%d\n", a); //那麼現在a 就已經是4 了。

--a 的例子

a = 5

printf("%d\n", --a); // 那麼這個答案應該是4, 因為它是之前就已經執行

printf("%d\n", a); // 那麼現在a 也是4.

你所提供的問題,有一些問題所以我不能回答

問題1 - 沒有值

問題2 - printf("%d\n", a--+b, b--+a);// 你確定沒打錯嗎?如果沒打錯那麼就是我不會了

2樓:匿名使用者

(--a+b,--b+a)這個是乙個表示式——逗號表示式,其值(結果)就是第乙個變數的值,即--a+b的值,前後兩條語句都是這樣乙個逗號表示式的值被輸出

3樓:不_想_知道

a,b的初始值是多少?其實這個就是考你--與++的運算規則,你要理解的是語句這個概念就比較好理解了。

4樓:匿名使用者

因為 --a 或者 --b ,是先執行自減,再參與運算。

5樓:江湖_一頁

運算順序沒有變,當然結果不變了啊!都是從左至右!括號在這裡想當於沒有

c語言printf("a + b = %d\n",a + b);為什麼輸出的是--------a+b=a呢?

6樓:滄海雄風

#include

int main()

else

return 0;

}輸入a:1

輸入運算子c:+

3輸入b:a + b = 4

press any key to continue

7樓:

舉個例項說明一下。

#include

int main()

當我們輸入a、b的值:4 8,然後回車執行,輸出結果為:

a + b = 12

如果把printf("a + b = %d\n",a + b);該寫成:printf("%d + %d = %d\n",a,b,a + b);

則輸出結果為:4 + 8 = 12

由此我們可以得到結論:每乙個%d對應輸出列表的乙個變數,並且是按照順序一 一對應起來的。

8樓:張壯同學

少年,你的程式有點bug,

printf("輸入b:");

scanf("%b",&b);

應該改為

printf("輸入b:");

scanf("%d",&b);

改完再試試

printf("a=%d,b=%d",a,b);和printf("%d,%d\n",a,b);的區別.

9樓:丹眼皮男生

一、格式化輸出的不同:printf("a=%d,b=%d",a,b)列印出e68a8462616964757a686964616f31333366306530來的是a="a的值",b="b的值",如果a和b的值分別為1、2,則列印到螢幕上的結果是a=1,b=2。printf("%d,%d\n",a,b)列印出來的只有a和b的值,如果a和b分別為1、2,則列印到螢幕上的結果是1,2。

這種結果的區別是格式化輸出的作用,在printf中雙引號裡面的內容按原樣輸出,而%後面帶乙個字元是引號後面引數的格式化,代表用什麼樣的格式輸出後面的引數。

二、轉義字元的有無:printf("%d,%d\n",a,b)裡面有乙個轉義字元\n,這個轉義字元的功能是換行,也就是說下乙個輸出會在下一行,而printf("a=%d,b=%d",a,b)沒有這個轉義字元,所以它不會換行,下乙個輸出直接接在上乙個輸出的後面。

三、運算子的有無及作用:printf("a=%d,b=%d",a,b)裡面的=不是賦值,而是直接輸出乙個=,printf("%d,%d\n",a,b)沒有=,所以沒有=的輸出。

10樓:gta小雞

百分號%表示佔位符,代表需要把乙個資料填到對應的地方,百分號後面的字元說明了這種資料的型別。例如%d表示十進位制整型、%f表示浮點數、%s表示字串。

11樓:楓彩世代

printf函式雙引號內

來的內容除了%什麼是原自樣輸出bai的,所以你寫成什du麼都會輸出,你寫成等號是zhi想輸出時比較容易dao理解,知道是哪個變數的值,輸出是a=什麼,沒有的就直接輸出a的值了,你也可以寫成別的比如「a的值是:%d」,它也會輸出,主要你要理解這個函式的意義和用法。。。

12樓:匿名使用者

第乙個輸出是為了讓輸出的格式更好看,更明確,a= 和b= 會照程式原樣輸出。

13樓:匿名使用者

只是顯示出來的zhi結果不太一樣。

dao例如,如果專a=10,b=20

那麼printf("%d %d\n",a,b);顯示的結果如屬下行10 20

printf("%d,%d\n",a,b);顯示的結果如下行10,20

printf("a=%d,b=%d",a,b);顯示的結果如下行a=10,b=20

就是在雙引號裡你寫了什麼,輸出時就顯示什麼,其中%d按先後順序,由a和b的實際值代替。

14樓:匿名使用者

printf會將第乙個字串原樣輸出,只是將%d的地方替換成後面引數的值

\n表示輸出換行

15樓:

假如a=1,b=2

第乙個在螢幕上輸出為:

a=1,b=2

第二個在螢幕上輸出為:

1,2%d是格式輸入輸出,代表輸入乙個整數%c是代表乙個字元

%s是代表字串

還有%x,%u等等

16樓:

int a = 0;

int b = 1;

第乙個的輸出 a=0,b=1;

第二個的輸出 0,1;

17樓:

顯示結copy果是這樣的//、

printf("%d %d\n",a,b);

a bprintf("%d,%d\n",a,b);

a,bprintf("a=%d,b=%d",a,b);

a=?,b=?(?是a b的值)

這是乙個輸出語句。。

重要顯示結果。。。

假如 #include

void main()

其結果為: 3 4

3,4a=3;b=4

以下程式的輸出結果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); } 求解,萬分感謝

18樓:匿名使用者

輸出結果:30

原理:1.c語言的執行順序大多都是自右向左(但是少數c語言編譯軟體內的輸出結容果為31,它的執行順序是自左向右,這裡以vc++ 6.0為例說明輸出30的原因)。

2.先執行--b+a,根據運算順序知道相當於(--b)+a,b先自減,即b=10,此表示式--b+a的值為31.

3.然後執行- -a+b,相當於(--a)+b,a先自減,即a=20,此表示式- -a+b的值20+10=30。

4.printf("%d\n",- -a+b,- -b+a); 輸出第乙個表示式的值,(printf函式輸出順序是自左向右)。

19樓:匿名使用者

printf 為什麼引數裡bai只有乙個%d ??後面卻有兩du個變數??

如果zhi

是printf("%d\n%d",- -a+b,- -b+a)的話dao輸出應該是

3031

系統先執行了 --b+a的,版所以--b+a=31;

然後權再執行 --a+b,那時候b已經被減1了,所以--a+b=30。

20樓:

先生bai 為什麼引數列表有兩個du

而你的佔位符

zhi只有乙個dao %d

如果你手誤的話那麼有兩個專占屬位符 答案是 3031

21樓:樂樂等待花開

- -a+b即為(--a)先計算得20,然後接著計算(--a)+b為20+11+31;

--b+a即為(--b)先計算得10,然後接著計算(--b)+a為10+20=30;

22樓:匿名使用者

錯誤,沒有結果,warning: operation on 『a』,'b' may be undefined

c語言 main() { char a='1',b='2'; printf("%c",b++);printf("%d\n",b-a)} 結果是什麼?說明一下。

23樓:右傾的墮落主義

答案是:22

分析:char a='1'b='2'; //賦值,注意a b的型別為char

printf("%c",b++); //以字元型列印列印b後b才自加,所以是現打

//印出「2」後

//b的ascii碼值是50,自加後是51printf("%d\n",b-a) //這句是b的ascii碼值減去a的ascii碼值後

//以整型輸出,即51-49=2,所以輸出「2」

24樓:匿名使用者

輸出結果 22

main()

25樓:匿名使用者

22 第乙個2是字元第二個2是數字

printf("%c",b++);先輸出b,再b++,b變成'3'了

printf("%d\n",b-a);b-a也就是'3'-'1'=2

C語言問題,C語言問題

符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...

C語言求解,C語言求解

我去,你也太大意了吧!1 定義的bml變數是小寫的 float w,h,bmi 在後面各處使用該變數的時候卻是大寫的 bmi fbmi w,h 2 scanf函式名你又打多了乙個字母t scantf f,f w,h 3 定義的函式fbmi,呼叫函式的時候同樣大小寫不匹配 bmi fbmi w,h 4...

C語言問題,c語言問題

這是值傳遞,值傳遞的過程的是,系統會給你的實參的值進行乙個拷貝,把這個拷貝傳遞給形式引數。因為是拷貝,所以實參裡頭的值是不會改變的。如果是位址傳遞就不一樣了。補充 你可以定義乙個指標,這個指標指向主函式的結構體。然後子函式的形參也定義乙個指向結構提的指標。這樣就是位址傳遞了。樓主還是好好花點時間看看...