[问题] 请教一些观念题(指标,容量,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