【C语言速成】4. 运算和类型转换

常用的运算符

一般运算:

这样的运算结果是一个新的值,通常用在赋值或者判断里

  • 相加:a + b
  • 相减:a - b
  • 相乘:a * b
  • 相除:a / b
  • 取a除以b的余数:a % b

改变变量自身原本值的运算:

这些运算结束后会改变变量自己原本的值,可以单独作为语句执行

  • 让自己加1:a++++a
  • 让自己减1:a----a
  • 让自己加一个数:a += b
  • 让自己减一个数:a -= b
  • 让自己乘一个数:a *= b
  • 让自己除以一个数:a /= b

示例

enter image description here

输出:

a的值是10
a的值是100
a的值是9
a的值是10
a的值是20
a除以20以后是1
a乘20以后是400

二进制位运算:

  • 按位取反(反转0和1):~a
  • a和b进行与(AND)操作:a & b
  • a和b进行或(OR)操作:a | b

二进制位运算只能用于整数类型。

类型转换

强制类型转换

强制类型转换明确指定把一种类型的数据转换成另一种类型的数据。比如把一个值是1.23的float类型变量a强制转换成int类型,再赋值给int型变量b可以这么写:

float a = 1.23;
int b = (int)a;

之后b的值就是1。小数转换成整数时会直接砍掉小数点后的部分,不进行四舍五入。
强制类型转换的基本写法像下边这样:
(要转换成的类型)原来的值

隐式类型转换

在进行赋值和运算时如果目标类型比原来数据的类型能表示的数据范围更大,就不需要进行强制类型转换。
比如把一个值是20000的int型变量a赋值给一个long类型变量b,因为long能表示的数据范围比int的大,所以可以不进行强制转换,让程序自动进行:

int a = 20000;
long b = a;

这样以后b的值是20000,完全没有任何问题。

示例

assswedee

输出:

b的值是9
a强制转换到int后的值是9
标签