赋值运算符及赋值表达式,C语言赋值运算符及其赋值表达式详解

赋值运算符及赋值表达式,C语言赋值运算符及其赋值表达式详解,第1张

概述赋值 *** 作是程序设计中最常用的 *** 作之一,C 语言共提供了 11 个赋值运算符,均为二元运算符,其中仅有一个为基本赋值运算符 =,其余 10 个均是复合赋值运算符,即: 基本赋值运算符 赋值 *** 作是程序设计中最常用的 *** 作之一,C 语言共提供了 11 个赋值运算符,均为二元运算符,其中仅有一个为基本赋值运算符 =,其余 10 个均是复合赋值运算符,即:基本赋值运算符:=。复合赋值运算符:+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(求余赋值)、 <<=(左移赋值)、>>=(右移赋值)、&=(按位与赋值)、|=(按位或赋值)、*A=(按位异或赋值)。
赋值 *** 作的优先级较低,仅高于逗号运算符。
基本赋值 =如 int a=5; 表示把 5 赋值给整型变量 a,不能读成 “a等于5”。赋值号左边必须为左值,赋值号右边的右值可以为常量、变量或表达式。如下赋值均是正确的。
int a,b; //定义整型变量a和ba=3; //把常量3赋值给a,右值为常量b=a; //把变量a的值赋给b,右值为变量b=a+3; //把求和表达式a+3的值赋给b,右值为表达式
以下赋值均是错误的。
int a=2;3=a; //错误,常量3不能作为左值const int b=5; //定义整型常变量只读变量b,并初始化为5,其值不能被改变b=1; //错误,企图改变常变量的值,即常变量不能作左值
复合赋值:+=、-=、*=、/=、%=a+=b; 等价于 a=a+b;
a-=b; 等价于 a=a-b;
a*=b; 等价于 a=a*b;
a/=b; 等价于 a=a/b;

例如:
int a=5;a+=3; //等价于 a=a+3;
由于赋值运算符的优先级很低,仅高于逗号运算符,故最后做赋值 *** 作。

a+=3+2; 等价于 a=a+(3+2);

通过下面的例子,掌握上述 4 种复合赋值运算符。

【例 1】分析以下程序,输出其运行结果。
#include<stdio.h>int main (voID){    int a=l,b=2,c=3; //定义三个整型变量,并初始化    float d=10.2f; //定义float变量d,用浮点常量10.2初始化    a+=1; //相当于 a=a+1;即 a=1+1=2    b-=a+5;    c*=a-4;    printf ("%d,%d,%f",a,b,c,d/=a);    return 0;}
代码分析:
1) float d=10.2f; 如果改为 float d=10.2; 虽然没有语法错误,可以正常运行,但一般编译器会提示 warning(警告),原因是编译器会把 10.2 等常量默认当成 double 型常量处理,与 d 的类型 float 不一致,故出现警告。因此可通过加 f 明确 10.2 为 float 型常量。

2) a+=1; 相当于 a=a+1; 求出 a 为 2。

3) b-=a+5; 由于赋值运算符的优先级低于算术求和运算符,故该语句等价于 b=b-(a+5);,即 b=2-(2+5);,得 b=-5;。同理,c*=a-4; 即 c=3*(2-4);,故 c=-60

4) printf("%d,d/=a); 由于输出列表中 a、b 和 c 均为 int 型变量,故输出格式占位符均为 %d;输出列表中第 4 项为表达式,其表达式的值为 d=d/a=10.2f/2=5.1,为浮点类型,输出格式占位符为 %f,在 VC++ 6.0 环境中,float 类型为小数点后保留 6 位数字。

运行结果为:
2,-5,-6,5.100000
总结

以上是内存溢出为你收集整理的赋值运算符及赋值表达式,C语言赋值运算符及其赋值表达式详解全部内容,希望文章能够帮你解决赋值运算符及赋值表达式,C语言赋值运算符及其赋值表达式详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存