c语言:赋值运算符与赋值表达式

时间:2021-05-20 01:37:20

任务代码:

#include <stdio.h>
int main ()
{
int a
printf("%d",(a=5));
return 0;
}


执行情况:

c语言:赋值运算符与赋值表达式

知识总结:

运算符的优先级:

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

c语言:赋值运算符与赋值表达式


赋值表达式:<变量><赋值运算符><表达式>;

注意:左值常为变量,而不能是常量;例如a=3.14左值变量是右值赋值;


赋值过程中的类型转换:

c语言:赋值运算符与赋值表达式

(特别注意:浮点数赋值给int数的时候,疆浮点数社区小数部分,例如上图a=4,但是不是四舍五入);


复合数值运算符:

c语言:赋值运算符与赋值表达式

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)的值;

例题:赋值表达式的求值

c语言:赋值运算符与赋值表达式

对于printf("%d",(j=i++));来说i++是i自增前的值赋值给j之后再++,所以赋值表达式的值就是i 的原始值;

对于(a=3*5)=4*3来说,看似运算的左值应该是变量,但是题目给的是常量,看似无意义,但是赋值表达式的值是(左值是15),然后右值将12赋值给a所以最终结果为12;

对于最后一个要注意的就是运算结合方式是自右向左;结果-264;


心得体会: