c 輸出結果為什麼都是A的函式

時間 2022-04-22 14:55:03

1樓:匿名使用者

這主要是因為引數傳遞的問題。

在你呼叫print函式的時候,這時候會拷貝建構函式重新建立一個物件,這個物件是a。所以你呼叫的結果就都是使用了a的printme了。

一般來說,使用虛擬函式的時候,傳遞的應該是指標。當然引用也是可以的。

這是c++的基礎知識。看來你的基本功還不過關!

2樓:

因為你void print(a a)的引數定義的就是類a的物件啊,你主函式傳入b、c的物件都沒用,用到的還是a的物件a,所以b、c的函式根本不會呼叫。

3樓:匿名使用者

會呼叫兩次a的f()

第1次是銷燬物件b時執行完b類解構函式還會執行父類即a的解構函式

第2次是銷燬物件a時執行a的解構函式

4樓:匿名使用者

%c之間沒有空格的時候,輸入也沒有空格,如:abc

%c之間有空格的時候,輸入要有空格,如a b c

如果是%d %c交叉輸入,如%d%c%d%c,輸入就應該是10a11b

5樓:

我也複製下。

對不起,這種題看都看不懂,很抱歉,打擾了,為了任務點開了問題,湊點獎勵,請忽略

b和c都是繼承的a,bc列印了自己的方法也會a的方法。

6樓:

對不起,這種題看都看不懂,很抱歉,打擾了,為了任務點開了問題,湊點獎勵,請忽略

c++用printf函式輸出資料格式附。。不明白為什麼輸出結果是那樣的。。如圖。 5

7樓:夜禮服假面

%d int 接受整數值並將它表示為有符號的十進位制整數,i是老式寫法

%o unsigned int 無符號8進位制整數(不輸出字首0)

%u unsigned int 無符號10進位制整數

%x unsigned int 無符號16進位制整數,x對應的是abcdef,x對應的是abcdef(不輸出字首0x)

printf("a = %d,%o,%x,%u",a,a,a,a); 應該輸出 a = 65535,177777,ffff,65535,你的**是錯的

printf("b = %d,%o,%x,%u",b,b,b,b); 應該輸出 b = -2,37777777776,fffffffe,4294967294,你的**是錯的

8樓:韓和立南婉

不同的編譯器int的長度不同,有的32位,有的16位,在這裡是16位

unsigned int(無符號整形),int(有符號整形)在計算機中都佔16位,能夠表示

的數字範圍都是0x0000~0xffff(這裡用16進製表示),但是這些數字的所表示的數

不一樣,無符號整形對應的範圍是0~65535(2^16-1),有符號整形的範圍為:

-32768至32767,即-2^15至(2^15-1)

負數以補碼的形式儲存在計算機中,負數補碼的計算方式,如x負數,第一步取x的絕對值,第二步計算x的二進位制,第三步對二進位制取反,最後在加1,最後得到的二進位制形式即是負數x的儲存形式。

d有符號十進位制 o八進位制 x十六進位制 u無符號十進位制

65535的16進位制0xffff,八進位制177777,在計算機中儲存的內容就是二進位制

0x1111111111111111(16個1,後面用16進製表示)轉換成有符號數就是-1,

過程:0xffff首位是1是負數,因此這是補碼,轉換成真值就是上面過程的逆過程

0xffff -> 0xfffe(減1) ->0x0001(取反)->1(絕對值)-> -1(加負號)

-2的二進位制的計算:是負數就計算補碼 -2 ->2(絕對值)->0x0002(二進位制:這裡用十六進位制表示)->0xfffd(取反)->0xfffe(加1)

在計算機-2的儲存就是補碼0xfffe 八進位制177776 無符號數65534(就是0xfffe對應的數)

問一個c++的問題:為什麼第三次輸出的結果不受第二次輸出的結果,也就是呼叫函式的影響呢?

9樓:艾薩克

因為 changeage 函式只是把age的值傳進去了,在函式體內修改該變數的值不能帶回到函式外。

如果要修改值的話,c++可以用引數引用,也就是說函式頭為

或者像c語言一樣傳指標進去也行。

10樓:

呼叫changeage時,只是傳遞值,並不是變數本身,在changeage再怎麼改變,也不會影響之前的變數

11樓:匿名使用者

因為你在main函式的age是實參,你傳遞到changeage裡之後,會吧值複製給形參,兩者並不是同一資料

C語言指標陣列求輸出結果,為什麼

陣列是順序儲存的,給你畫個記憶體圖 p賦予a 0 0 的地址後,p就是1了,p 2 是a陣列裡第3個元素,也就是3,p 4 是第5個,也就是5,m p p 2 p 4 是把它們3個乘起來乘起來是15 像這樣的二維陣列,用指標時把它看在一維的就可以了 答案是15 p是陣列起始位置指標,二維陣列在記憶體...

c語言迴圈結構為什麼輸出結果是,c語言迴圈結構為什麼輸出結果是

輸入 hello 之後有回車的吧,這個是 n 貢獻給other 輸入 12345 之後也有回車的,這個是 n 貢獻給other 輸入 之後,本身貢獻給other有4個 也有回車的,這個是 n 貢獻給other 輸入 之後也有回車的,但是因為首先 共享給other一個之後,while迴圈結束了,n 作...

C語言程式為什麼最後的輸出結果是這個

getchar接收的是 字元 putchar輸出的也是字元 它們不會接收和輸出整數!第一次c 2 執行case 0 後面的語句直到遇到break 所以輸出是 6 6 顯示就是66。第二次c 4 執行case 2 後面的語句直到遇到break 所以輸出是 8 顯示就是668。第三次c 7 執行defa...