且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C陷阱与缺陷

更新时间:2022-08-13 08:35:59

1.     <C陷阱与缺陷>

int num[10]={0} ;

  测试一下 num[0]  是否 等于 0[num]  。。。。。。

 

因为num是首地址   num+0 ==0+num

2.

其实C中只有一维数组   我们所说的 int a[3][4]   只是一个包含了三个元素  每个元素都是包含了四个整形值的一维数组  

 

3.int  num[10][10]  ;

 int *p=num[0]  ;

名为num的数组中 num[0]-num[9]表示的是 每个长度为10的一维数组 元素的首地址

 

4.     (* (void (*)())0)()  ;   //眨眼一看很难看懂 其实这就是一个函数指针的问题 调用 0地址的函数    考试的时候我以为是 数值的强制转换 郁闷了。。。。

 

5. a++++b  会报错   a++ + ++b 不会错 因为 词法分析器 会自左向右 结合字符来组成 运算符  a++后位一个数值 如果a++++那么 一个数值的自加是不是没意义呢

 

6.  a<<3+ 5    (a<<3)+5  意思完全不同  运算符优先级问题 

 

7.if

(

1

<

2

)   //这样编译器也能通过 

 

8.