1)不要去运用太多的递增运算符和递减运算符。
(1)当在函数的形参上应用过多的递增运算符时
例如:
int num=1;
while(num<6)
printf("num=%d; num*num=%d\n",num,num*num++);
按照原意是想打印num 和 num平方的值 再自加。但是printf()在对参数求值时可能先对后一个num*num++
求值,那么打印的值就为 num+1 num*num
因为再C语言中编译器可以选择先对哪个参数求值。
类似在表达式中也会发生类似的情况
例如
num=num*2+(++num);
编译器可能先执行后面的++num 所以不要用太多的自增运算符。
2)表达式是由运算符和运算对象组成 每一个表达式都有自己的值
表达式 值
4 4
3+4 7
c=3+4 7
表达式中 算术运算符的优先级最大 关系运算符的优先级次之 赋值运算符的优先级最小
在关系运算符中 > < >= <= 的优先级 大于 == !=
3)逗号运算符
int i;
int j;
for(i=1,j=2;i<5;i++,j++);
逗号运算符使for循环变得更加的灵活。
逗号运算符保证了被分割的表达式从左向右计算
整个逗号表达式的值为右边的值。例如 a=(i=3,b=4) 该表达式的值为 4
4) !运算符的优先级和++ – 同样高,&&和||运算符的优先级比关系运算的更低。
&&和|| C语言保证表达式是由从左往右计算,也相当于是一个序列点。而且C保证一旦发现某个元素可以让整个表达式有结果,便会终止计算。
例如 if(a!=0&&12/a>0)
当发现 a的值为零时,会终止计算不会去计算 12/a 发生截止中断
5)关于程序跳转 :continue break goto
continue:
提前终止这一次循环的以后的操作。
如果是 while 或是 do while 直接到下一次循环的判断语句处
如果是for 直接到这一次循环的更新语句。
break :
终止循环 可以用在循环里,也可以应用在 switch 里
goto :跳转到标签处。