一、注释符号——“/* */”和“//”
1、“/* */”注释不能嵌套,“/*”总与离它最近的“*/”匹配
2、注意:y=x/*p;这个语句会报错,本意是想表示x除以p指向的内存里的值,把结果赋给y。但是编译器会把“/*”后边的内容当做注释,直到“*/”出现,可是没有找到“*/”,所以出错。应该写成y=x/(*p)。
二、单引号、双引号
1、双引号引起来的是字符串常量
2、单引号引起来的是字符常量
三、++、--操作符
1、++、--作为前缀,先自加或自减然后再做其他运算;
2、++、--作为后缀:
① int j;
int i = 3;
j=(++i,i++,i+10);
++做后缀时,i在遇到每个逗号后,认为本计算单位已结束,i这时候便会自加,所以j=15
② for(i=0;i<10;i++)
{
}
i与10进行比较后,认为本计算单位结束,i自加
③ k=(i++)+(i++)+(i++);
i遇到分号才认为本计算单位结束,i这时候自加
④ 经典例题:
int i = 3;
int x =( ++i)+(++i)+(++i);
有的编译器计算出x等于18,因为i先经过三次自加变成6,然后3个6相加得18;VC++6.0里计算出x等于16,先自加两次为5,然后计算前两项和,然后再加上第三次自加的i得16。最后i等于6。
四、符号优先级问题
1、. 的优先级高于*、->操作符。例如*p.f 应该相当于*(p.f),即对p取f偏移,作为指针;
2、[ ]高于*,例如int * p[ ],相当于int * (p[ ]),指针数组;
3、函数()高于*,例如 int * fp( ),fp是一个函数,返回int *;
4、逗号运算符在所有运算符中优先级最低