C语言的赋值运算符

赋值运算符是C语言的运算符之一。赋值运算符用于为变量指定值,在C语言中,包括两类赋值运算符,一类是简单赋值运算符,将值直接赋给变量,另一类是复合赋值运算符,变量参与运算同时用运算结果更新变量的值。

简单赋值运算符

简单赋值运算符的使用形式为v = ee可以是常量、变量或表达式。如果ve的类型不同,在赋值过程中会发生类型转换,将e的值转化为v类型的值,然后赋给v

C语言中,赋值操作产生结果,结果就是v的值。因此可以将赋值表达式作为操作数嵌入到其他表达式中,在表达式中是右结合的。但不建议这样使用,因为这会造成代码不易理解且可能会产生隐含错误。

=用在变量的初始化时int v = e,它不会产生结果,因此,这时它不是一个运算符,而是和所有元素一起组成了一个初始化语句。

赋值表达式左边的操作数必须是左值,即存储在计算机存储单元中的对象,不能是常量和计算结果。

复合赋值运算符

复合赋值运算符的使用形式为v op= e,等价于v = v op e。其中op可以是+-*/%&^|,后三个为按位运算符。

自增和自减运算符

相对于i += 1i-= 1,C语言提供了自增++和自减--运算符将这个语句进行更加简练的缩写i++, i--。但是形式上的精简却并没有带来复杂性的简单,因为它们既可以做前缀运算符也可以做后缀运算符,在执行中具有不同的意义。++i--i意味着立即自增或自减1,而i++i--意味着先用i的值进行计算,然后在下一条语句执行前在对i自增或自减。后缀++--比一元正负号优先级高,且都是左结合的,前缀++--运算符和一元正负号优先级相同,且都是右结合的。

/***************************************
 * assignment_operator.c               *
 *                                     *
 * C语言的赋值表达式                   *
 ***************************************/

#include <stdio.h>

int main()
{
   /*初始化*/
   int i = 0;
   int j = 0;
   int k = 0;
   float f = 72.99f;

  /*简单赋值运算符*/
   printf("i: %d\n", i);
   i = 5;
   printf("i: %d\n", i);
   j = i;
   printf("j: %d\n", j);
   k = 10 * i + j;
   printf("k: %d\n", k);

   /*赋值过程中的类型转换*/
  i = f;
  printf("i: %d\n", i);
  /*改变的变量的值的拷贝,原变量保持不变*/
  printf("f: %f\n", f);
  f = 136;
  printf("f: %f\n", f);

  /*赋值运算符嵌入表达式,右结合*/
  i = j = k = 0;
  printf("i = %d, j = %d, k = %d\n", i, j, k);
  i = (j = (k = 1));
  printf("i = %d, j = %d, k = %d\n", i, j, k);
  k = 1 + (j = 1);
  printf("k = %d\n", k);

  /*复合赋值运算符*/
  i += 2;
  printf("i = %d\n", i);

  /*自增和自减运算符*/
  i = 1;
  printf("i is %d\n", ++i);
  printf("i is %d\n", i);

  i = 1;
  printf("i is %d\n", i++);
  printf("i is %d\n", i);

  i = 1;
  printf("i is %d\n", --i);
  printf("i is %d\n", i);

  i = 1;
  printf("i is %d\n", i--);
  printf("i is %d\n", i);

  return 0;
}

赋值运算符

参考文献

  1. K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
  • 89
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值