1.当你看到有这样的用法的时候的,你可以肯定这是错误的
malloc(sizeof(strlen(str)));
这是因为字符串最后有结束标志'/0',应该改为:
malloc(sizeof(strlen(str)+1));
2.switch分支语句的使用
这个程序的输出会是:"01default";
之所以会这样,就是因为C语言的设计中,并没有默认在没个case结束后加上break;
这不得不说是一个缺憾。程序应该改为:
3.break语句的作用范围
break主要用于跳出外层循环或者是用于switch语句
上面这个程序,break执行之后,会跳出while(1)循环,而与if无关。
而continue则是跳出当前作用范围。
4.无符号整数的适用范围
一般适用于位域和二进制掩码.
在其它的操作中,最好使用int型或者强制类型转换,有助于程序移植,以及避免类型提示所带来的潜在问题。
5.让人迷惑的运算符优先级
原则1:所有的运算符(包括复合运算符)都具有右结合性;
a = b = c = 2; //相当于c=2,b=2,a=2;
原则2:具有左结合性的运算符,比如"&"和"|",是从左到右执行的
建议:乘除高于加减,其余一切加括号!