看板 C_and_CPP 關於我們 聯絡資訊
ex1: char a = 0x80; cout<< a ; // -128 cout<< a+1; // -127 觀念: 變數超過上限,會從下限重新循環 unsigned int a = pow(2,32)+1; cout << a; // 1 這邊也和上面的觀念一致 問題一: int a = pow(2,31); cout << a; // -2147483658 int b = pow(2,31)+1; cout << b; // -2147283658 為什麼在int的情況就無法循環呢? ex2: void test(char *&a) { // 問題二 cout << sizeof(a)/sizeof(char);// 想要在函數裡知道傳進來矩陣的長度 試了一些方式都不成功, 請問有辦法達成這個功能嗎? } int main() { char a[] = {'1','2','\0'}; char *b = "12"; test(a);//報錯 test(b);//正常 //問題三:在沒有reference的情況兩個都可以傳進去,但有reference 後矩陣就傳不進去了,為什麼? return 0; } ex3: 置底十三誡的第八誡要表達什麼呢? 我編譯出來沒遇到什麼問題 置底十三誡的第九誡,MACRO(++x)應該也跟第八誡要表達的一樣 想請問這兩邊要闡述什麼樣的觀念呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414216904.A.439.html
littleshan: 前面的觀念是錯的,overflow是undefined behavior 10/25 15:51
carylorrk: 問題二可以用 template 達成 10/25 17:45
carylorrk: 問題三,array 不會 decay 成 ref to pointer 10/25 17:47
carylorrk: 另外,pointer to string literal 記得加 const 10/25 17:51
chobitskey: 問題二有兩種傳法,一種是參考,一種是指標 10/31 04:03
chobitskey: 先寫指標的方式void test(char *);這是宣告式 10/31 04:07
chobitskey: 再來是參考,void test(char (&a)[3]); 10/31 04:09