C :赋值运算符语法注释赋值运算符表运算符关键字示例简单赋值复合赋值运算符的结果
语法
表达式赋值运算符表达式
assignment-operator: one of
=*=/=%==-====^=|=
注释运算符将值存储在左操作数指定的对象中。 代入运算有以下两种。
单纯代入。 第二个操作数的值存储在第一个操作数指定的对象中。
复合赋值:在保存结果之前执行算术、移位或位运算。
下表中的赋值运算符=都是复合赋值运算符。
赋值运算符表
运算符关键字中,三个复合赋值运算符具有等效的关键字。 分别如下
c将这些运算符关键字指定为复合赋值运算符的替代拼写。 在c中,宏在标头中提供了备用拼写iso646.h。 在c中,拼写替换是关键字; 在iso646.h中,不推荐使用或相当于C的使用。 在Microsoft c上,/permissive- /Za需要或编译器选项才能启用备用拼写。
示例//expre _ assignment _ operators.CPP//compile with :/ehsc//demonstrateassignmentoperators # includeiostreamum a =b; //a is 9 b %=a; //b is 6 c=1; //c is 5 d |=e; //Bitwise--d is0xFFFF cout 'a=3,b=6,c=10,d=0xAAAA,e=0x 555 ' endl ' a=byields ' a endl ' b %=ayields 如果两个对象都是算术类型,则在存储值之前将右操作数转换为左类型。
可以将const和类型的对象volatile指派给类型不是或的左值volatile const volatile。
对于赋值给类类型对象(struct、union、类型)的class,operator=由函数执行。 此运算符函数值的默认行为是执行按位复制。 但是,可以使用重载运算符更改此行为。 类类型还包括复制赋值运算符和移动赋值运算符。
从给定基类显式派生的类中的对象可以分配给基类中的对象。 反之亦然,因为存在从派生类到基类的隐式转换,而不是从基类到派生类的隐式转换。 例如:
//expre _ simple assignment.CPP//compile with :/EHS c# includeiostreamusingnamespacestd; class base { public : abase (} { cout ' constructing basen ' ); }; class a derived : publicaba se { public : aderived () } { cout ' constructingaderivedn '; }; int main () { ABase aBase; 已授权授权; abase=授权; //OK aDerived=aBase; //C2679}向引用类型的赋值的作用与向引用指向的对象的赋值相同。
对于类类型对象,赋值与初始化不同。 要演示不同的赋值和初始化机制,请考虑以下代码
UserType1 A; UserType2 B=A; 上面的代码表示初始值的设定项目。 调用了具有UserType2类型参数的UserType1的构造函数。 指定以下代码
UserType1 A; UserType2 B; B=A; 赋值语句
B=A; 可能具有以下效果之一:
为了调用函数operator=UserType2,还指定operator=UserType1参数。
如果存在显式转换函数usertype 1:3360 operator usertype 2,则将调用该函数。
调用UserType2:UserType2参数以复制结果的构造函数UserType1仅在存在此类构造函数时才可用。
复合赋值复合赋值运算符显示在赋值运算符表中。 这些运算符的格式为e1 op=e2。 其中e1是不可更改的const左值,e2为:
算术类型
如果op为或,则为指针****-
e1 op=e2表单表示为e1=e1 op e2,但只计算一次E1。
对枚举类型的复合赋值将生成错误消息。 如果左操作数是指针类型,则右操作数必须是指针类型,或者是计算结果为0的常量表达式。 如果左操作数是整数类型,则右操作数不能是指针类型。
将赋值运算符的结果赋值后,赋值运算符将返回左操作数指定的对象的值。 要获取的类型是左操作数的类型。 赋值表达式的结果总是左边的值。 这些运算符具有从右到左的相关性。 左操作数必须是可修改的左值。
在ANSI C中,赋值表达式的结果不是左值。 这意味着在(a =b )=c C中不允许使用合法的c式。
这篇博文是原创文章,未经博客同意不得转载。 如果同意,请注明博文的出处。 这篇文章的博客地址: https://blog.csdn.net/it _ cplusplus/article/details/118501420