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);
结果依然不对呢。我们来看看为什么。a,b都是整型,在C语言里面,整型与整型运算的结果,依然是一个整型,结果的小数部分被丢弃,这一过程被称作截断。a / b后,结果仍然是一个整型,数值已经被截断了,这时候,我们再赋给一个浮点型的c。也只能是整数2转成浮点2.0了,没有起到效果。
那我们将a,b,c都改为float。这样就不会出现截断了。a , b将会进行浮点运算,结果也是一个浮点数类型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。
下面的例子中,请记住后缀++或--,其实已经改变了数据对象的值了。但是,它返回并继续参与运算的数值,仍然是原始值。
本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/cyuyan/607.html