【24.1.20笔记】C++ Primer自学 Day16

四、表达式

4、赋值操作符

        = 就是赋值操作符,把右值赋给左值【初始化一次,赋值可以无数次】

        如果左值和右值的数据类型不同,赋值时编译器会给个警告【如果类型转换是有可能的话】,会尝试把右值数据类型转变成左值的数据类型【隐式转换】,但是常常会涉及精度丢失的问题。如果不能够进行隐式转换,那就会报错。

//不能隐式转换的例子
int *pi = ival; // 地址和整型
const int array_size = 8;
array_size = 512; // 错误,只读

【在进行运算时,一定要注意操作符的顺序】

( ch = next_char() ) != '\n' //先运算括号里再括号外
  ch = next_char()  != '\n' // 先运算逻辑操作符,再赋值

连等操作的合法性:

1、相同类型已经定义的变量,连等的赋值是可以的;

2、不同类型已经定义的变量,连等的赋值是不行的;

3、在定义时,尽量不使用连等;【分情况,如果都没定义就完全不合法,如果其中一个已经定义了,赋值给未定义的变量时,如果数据类型相同,就是合法的】

几个复合赋值操作符:

                +=                 -=                 *=                 /=                 %=
                <<=                 >>=                 &=                 ^=                 |=

5、递增和递减操作符

        递增和递减操作符都分为后置和前置两种情况:

        后置时: i++; i--; 先用i的值,然后再进行i+(-)1的操作;

        前置时:++i;--i;先递增或者递减,再使用i的值。

6、复数操作

        标准库提供复数类,通过在类体内进行操作符重载,可以对复数也进行算术运算。

#include <complex>
complex< double > a; 
complex< double > b;
complex< double > c = a * b + a / b;

        我们也可以使用基本数据类型给复数类型进行赋值,但是反过来不行,必须只赋值复数的实部或者虚部:

//基本类型给复数赋值
double dval = 3.14159; 
complex_obj = dval;
//复数给基本类型赋值
double re = complex_obj.real();  //double re = real( complex_obj );
double im = complex_obj.imag();  //double im = imag( complex_obj );

        复数支持四种复合运算 :

  +=        -=        *=        /=

        C++支持对复数的输入输出:

//cout输出复数
complex< double > complex0( 3.14159, -2.171 ); 
complex< double > complex1( complex0.real() ); 
cout << complex0 << " " << complex1 << endl;
//输出
( 3.14159, -2.171 ) ( 3.14159, 0.0 )
//cin读取复数
cin >> a >> b >> c
// 这里 a b 和 c 为复数对象
3.14159 ( 3.14159 ) ( 3.14, -1.0 )
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值