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...