c prime plus 学习重点知识(运算符)
比较常用的运算符优先级
关系运算符优先级比算术运算符优先级低,比赋值运算优先级高。
注意:第二行里面的+ -代表的是一元运算符,即我们常说的正负号。
组合赋值运算符(+=,*=)优先级与赋值运算符优先级相同。
逗号运算符
逗号运算符扩展了for循环的灵活性,以便在循环投中包含更多的表达式。例如:
for(i=3,j=9;i<13;i++,j+=3)
printf(“you have %d hour and %d mins”,i,j);
逗号运算符并不局限于for循环,但这是他最常用的地方。首先,它保证了被它分隔的表达式从左往右求值(换言之,逗号是一个序列点,所以逗号左侧项的所有副作用都在程序执行逗号右侧项之前发生)。因此,i 在j之前被初始化。在该例中,顺序并不重要,但是如果i的表达式中包含了j时,顺序就很重要。例如,假设有下面的表达式:
ounces++,cost = ounces中FIRST_ 0Z ;
在该表达式中,先递增ounce,然后在第2个子表达式中使用ounce的新值。作为序列点的逗号保证了左侧子表达式的副作用在对右侧子表达式求值之前发生。
其次,整个逗号表达式的值是右侧项的值。例如,下 面语句
x =(y=3,(z=++y+ 2) + 5);
的效果是:先把3赋给y,递增y为4,然后把4加2之和(6)赋给z,接着加上5,最后把结果11
赋给x。至于为什么有人编写这样的代码,在此不做评价。另一方面,假设在写数字时不小心输入了逗号:
houseprice = 249, 500;
这不是语法错误,C编译器会将其解释为一个逗号表达式,即houseprice = 249是逗号左侧的子表达式,500是右侧的子表达式。因此,整个逗号表达式的值是逗号右侧表达式的值,而且左侧的赋值表达式把249赋给变量houseprice。因此,这与下面代码的效果相同:
houseprice = 249;
500;
记住,任何表达式后面加上一个分号就成了表达式语句。所以,500;也是一条语句,但是什么也不做。
另外,下面的语句
houseprice = (249, 500) ;
赋给houseprice的值是逗号右侧子表达式的值,即500。
逗号也可用作分隔符。在下面语句中的逗号都是分隔符,不是逗号运算符:
char ch,date;
printf("%d %d\n", chimps, chymps) ;