1. 编程学习网 > 编程教程 > C语言教程 > C语言运算符

C语言运算符

在之前的章节中,我们使用到了+运算符,用于两个数据对象的相加。=运算符,用于将=号右边的值赋值给左边。这一章中,我们将详细认识一下C语言中的运算符。

1. 赋值运算符=

  C语言中,赋值运算符将=号右边的值,赋值给=号左边的变量中。千万不要把=号当做数学中的等于。

  将字面常量100赋值给整型变量a。

int a;
a = 100;

TIPS:

  字面常量就是直接写在程序里面的不可变更的数据对象,例如:100,200,"hello",'a'。它们不需要声明,也不能被赋值。


  将字面常量100赋值给整型变量a,将字面常量200赋值给b。a与b相加后的值300,赋值给c。

int a, b, c;
a = 100;
b = 200;
c = a + b;

  下面几种赋值是错误的,字面常量不能被更改。

"Hello" = "HelloWorld";
'a' = 'b';
100 = 200;

2. 加法运算符+

  加法运算符用于将两侧的值相加。100加200,为300。运算符作用于字面常量或变量均可。

int a;
int sum;
sum = 100 + 200;
int a, b, sum;
a = 100;
b = 200;
sum = a + b;
int a, sum;
a = 100;
sum = a + 200;

3. 减法运算符-

  加法运算符用于将两侧的值相加。a的值等于100减200,为-100。

int a;
a = 100 - 200;

  请注意,如果需要出现负值,请勿使用unsigned int。虽然,将unsigned int使用%d(有符号整型的转换符)来打印结果仍然是正确的。原因是,有符号和无符号整型数据表示方法一致。因此,使用%d来打印时,仍然可以得到正确的结果。但是,我们这里的类型是unsigned int,应当使用%u,以符合语义化。用%u打印会将最高位符号位看做数据位。所以,当无符号整型装了一个负数的时候,结果应当是溢出。具体原因请参照整型章节。

无符号整型使用负数

4. 符号运算符+、-

  符号运算符用于表示一个数值是正数还是负数,它仅需要一个操作数据对象,被称之为一元运算符。而加法运算符、减法运算法,需要两个操作数据对象,被称之为二元运算符。

  符号运算符+,我们一般省略不写+100,就是100。

  a的值+100,被符号运算符-,转换为-100。之后再赋值给a。a的值最后变为-100。

int a = +100;
a = -a; //  a的值+100,被符号运算符-,转换为-100。之后再赋值给a。a的值最后变为-100。

5. 二元运算符与一元运算符

一元运算符

二元运算符

二元与一元运算符

6. 乘法运算符*

  *是乘法运算符,注意不要用字母x来表示乘法了。

  c的值为10乘10,100。

int a, b, c;
a = 10;
b = 10;
c = a * b;

7. 除法运算符

  /是除法运算符。

int a, b, c;
a = 5;
b = 2;
c = a / b;

  a的值为5,b的值为2。那么5除以2,应该等于2.5。但是,好像用int来接收整型好像不太对。我们把c改为float或double。

int a, b, c;
a = 5;
b = 2;
c = a / b;
int a, b;
a = 5;
b = 2;
float c;
c = a / b;
printf("%f\n", c);

int/int

  结果依然不对呢。我们来看看为什么。a,b都是整型,在C语言里面,整型与整型运算的结果,依然是一个整型,结果的小数部分被丢弃,这一过程被称作截断。a / b后,结果仍然是一个整型,数值已经被截断了,这时候,我们再赋给一个浮点型的c。也只能是整数2转成浮点2.0了,没有起到效果。

int/int2

  那我们将a,b,c都改为float。这样就不会出现截断了。a , b将会进行浮点运算,结果也是一个浮点数类型float。

float/float

8. 求余运算符

  %百分号,用于求余。例如:10除以3,等于3余1。

int a, b, c;
a = 10;
b = 3;
c = a % b;

求余

9. 自增、自减运算符

  自增运算符++,和自减运算符--。用于将数据对象加1或减1。这两种运算符有两种形式,前缀模式和后缀模式。首先,我们来看一下前缀模式。++或--放置于数据对象前面。

前缀模式

  a被加了1,b被减了1,很好理解。

  那么我们继续看一下后缀模式。++或--放置于数据对象后面。

后缀模式

  后缀模式下,为什么第一次printf打印出来的a和b仍然都是10呢?而第二次打印出来的就是分别加一和减一的结果了。

  自增运算符在后缀模式下:先对数据对象进行自增或自减操作。但是,返回数据对象原先的值。

  那我们来解释一下,为什么第一个printf打印的是10。首先++和--都对a和b进行了自增、自减操作。所以,a的值是11,b是9。但是,++,和--运算符,返回了原先的值,传进了printf。那么,进入printf函数的a和b依然都是10。

  下面的例子中,请记住后缀++或--,其实已经改变了数据对象的值了。但是,它返回并继续参与运算的数值,仍然是原始值。

自增example

自增example2

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/cyuyan/607.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休