我的常识性错误

本文将不定期更新,记录个人所犯之常识性错误。

数组参数的体积(2006.10.08)

void foo( char bar[100] ) 
{ 
    printf( "%d ", sizeof(bar) ); 
}

一直认为输出应该是100,但实际却是 4(即 sizeof(char*))。现在,唯一让我庆幸的是我在函数参数中使用数组,并且依赖 sizeof 的结果的时候极少。

WSAStartup 要调用多少次(2008.01.08)

不知为什么,几年以来,我一直认为要为每个使用网络的线程调一次。直到今天才发现弄错了,按说我一直是仔细阅读 msdn 的,唉!不过为每个线程调一次只是多余的,并不是错误的,也许这就是我一直没有注意到它的原因吧。

do while 循环中的 continue 会跳到哪去(2008.01.08)

do
// ①
{
   i++;
   continue;
}
// ② 
while( i < 10 );

一直认为是①,今天正在写的程序出错了才发现是②。老天保佑以前的程序不出错吧。这个错误一直没发现的原因有两点,一是我用 do while 循环比较少,里面有 continue 的更少;二是自己偷懒了,想当然了,其实以前怀疑过它的结果的,但觉得①更符合逻辑就没有深究。