5.6 疑难解惑

疑问1:C语言中,不同类型的变量能不能赋值?

答:能赋值,因为C语言中使用类型转换运算符可以让变量混合使用。如果把char类型变量的值赋给int类型的变量,那么短的数据类型变量中的值会升级表示为长的数据类型,数据信息不回丢失。反之,长的数据类型变量赋给短的类型变量就会发生数据截断。

疑问2:什么是一元运算?什么是二元运算?什么是三元运算?

答:一元运算就是只需要一个操作数,如a--、a++、!a、~a等。二元运算就是需要两个操作数才能完成运算,例如:a+b、a-b、a*b、a/b等。三元运算符就是需要三个操作数才能完成运算,例如:a>b?a:b。

疑问3:C语言中的三元运算符,条件表达式?表达式1:表达式2的数据类型必须相同吗?

答:不需要,因为赋值运算时系统会自动转换类型。

疑问4:C语言中的“=”运算符与“==”运算符有什么区别?

答:“=”运算符是赋值运算符,它的功能是将等号右边的结果赋值给左边的变量;而“==”运算符是判断运算符,用于判断等号左右两边的变量或者常量是否相等。

疑问5:“b=a++”与“b=++a”的区别?

答:“b=a++”先将a赋值给b,再对a进行自增运算。“b=++a”先将a进行自增运算,再将a赋值给b。

疑问6:“a<<=2”、“a<<2”的区别?

答:都是对二进制数的一个操作。“a<<=2”等同于“a=a<<2”,而“a<<2”只是左移了两位,没有进行赋值运算。