`

《C陷阱与缺陷》-1

 
阅读更多

1、封号
(1)多一个封号,则不会执行循环体
for(...);
{...}
(2)少一个封号,改变main函数返回值类型为struct A
struct A
{

}
main()
{
}

2、悬挂else引发的问题,else与最近的if(y == 0) error();匹配
if (x == 0)
if(y == 0) error();
else{
z = x + y;
f(&z);
}

3、奇怪的无限死循环
int i,a[10];
for(i=1; i<=10; i++)
a[i] = 0;
实际上并不存在的a[10]
实际上并不存在的a[10]被设置为0,也就是内存中在数组a之后的一个字(word)的内存被设置为0,也就是i被设置成了0,这样就陷入了一个死循环

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics