[問題] 請教一些觀念題(指標,容量,reference)

作者: kdok123 (小天)   2014-10-25 14:01:41
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)應該也跟第八誡要表達的一樣
想請問這兩邊要闡述什麼樣的觀念呢?
作者: littleshan (我要加入劍道社!)   2014-10-25 15:51:00
前面的觀念是錯的,overflow是undefined behavior
作者: carylorrk (carylorrk)   2014-10-25 17:45:00
問題二可以用 template 達成問題三,array 不會 decay 成 ref to pointer另外,pointer to string literal 記得加 const
作者: chobitskey (愛而塔)   2014-10-31 04:03:00
問題二有兩種傳法,一種是參考,一種是指標先寫指標的方式void test(char *);這是宣告式再來是參考,void test(char (&a)[3]);

Links booklink

Contact Us: admin [ a t ] ucptt.com