任务代码:
#include <stdio.h>
int main ()
{
int a
printf("%d",(a=5));
return 0;
}
执行情况:
知识总结:
运算符的优先级:
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
赋值表达式:<变量><赋值运算符><表达式>;
注意:左值常为变量,而不能是常量;例如a=3.14左值变量是右值赋值;
赋值过程中的类型转换:
(特别注意:浮点数赋值给int数的时候,疆浮点数社区小数部分,例如上图a=4,但是不是四舍五入);
复合数值运算符:
c语言中大力提倡使用复合运算符;
赋值表达式及其值:
赋值语句:
(之所已成为语句就是要有;)
例如:a=3=2;
c+=(3*2);
赋值表达式:
(只是单一的表达式,并没有对应相应的;)
例如:a=3-2
c+=(3*2)
赋值表达式的值:
赋值表达式计算后左值的值;
应用:
#include <stdio.h>
int main ()
{
int a
printf("%d",(a=5));
return 0;
}
其中a=5就是赋值表达式,%d所寄存的值就是赋值表达式(a=5)的值;
例题:赋值表达式的求值
对于printf("%d",(j=i++));来说i++是i自增前的值赋值给j之后再++,所以赋值表达式的值就是i 的原始值;
对于(a=3*5)=4*3来说,看似运算的左值应该是变量,但是题目给的是常量,看似无意义,但是赋值表达式的值是(左值是15),然后右值将12赋值给a所以最终结果为12;
对于最后一个要注意的就是运算结合方式是自右向左;结果-264;
心得体会: