- 算数运算符
C提供的算术运算符:+,-,*,/,%,++,--。
C语言的算术运算符如下:
- 例如,
int a=15, b=8,c;
double x=15, y=8, z;
c = a + b ; // c 赋值为23
c = a - b; // c 赋值为7
c = a * b; // c 赋值为120
c = a / b; // c 赋值为1
c = a % b; // c 赋值为7
z = x + y ; //z 赋值为23
z = x - y; // z 赋值为7
z = x * y ; // z 赋值为120
z = x / y ; // z 赋值为1.875000
z = x % y ; // 出错
int x=5, y=9, z;
z = ++x ; // z赋值为6,x 变为6
z = x++ ; // z赋值为5,x 变为6
z = --x ; // z赋值为4,x 变为4
z = x-- ; // z赋值为5,x 变为4
z= ++x+y++ ; // z赋值为15,x 变为6,y 变为10
z= --x+y++ ; // z赋值为13,x 变为4,y 变为10
z= ++x+y-- ; // z赋值为15,x 变为6,y 变为8
- 逻辑关系运算符
C语言的关系运算符如下:
- 例如,
- int a=5, b=6;
- a>(b-1) 结果值为0
- (a +1)== b 结果值为1
- a>=(b-2) 结果值为1
- a<100 结果值为1
- (a+3)<=b 结果值为0
- a != (b-1) 结果值为0
- 逻辑运算符:
C语言的逻辑运算符如下:
逻辑非“!”运算符的运算律如下:
运算量 | 结果 |
1 | 0 |
0 | 1 |
例如:
int k=8;
! ( k ==0) 结果值为1
! ((k-8) == 0) 结果值为0
! (k<= 0) 结果值为1
逻辑与“&&”运算符的运算规律如下:
左运算量 | 右运算量 | 结果 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
逻辑或“||”运算符的运算规律如下:
左运算量 | 右运算量 | 结果 |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
例如:
- int x=5, y=18;
- (x>=5) && (y<20) 结果值为1
- ((x+1)>=0) && (y<17) 结果值为0
- ((x-8)>=0) && (y==18) 结果值为0
- ((x-5)>0) && (y!=18) 结果值为0
- ((x>=5)) || (y<20) 结果值为1
- ((x+1)>=0) || (y<17) 结果值为1
- ((x-8)>=0) || (y==18) 结果值为1
- ((x-5)>0) || (y!=8) 结果值为1
- 位运算符
C语言的位运算符如下:
例如:
- unsigned char x=0x17, y;
- y = ~x ;
位逻辑与“&”运算符的运算规律如下:
例如:
- unsigned char x=0126, y=0xac, z;
- z = x & y ;
-
位逻辑或“|”运算符的运算规律如下:
例如:
- unsigned char x=076, y=0x89, z;
- z = x | y ;
位逻辑异或“^”运算符的运算规律如下:
例如:
- unsigned char x=75, y=0173, z;
- z = x ^ y ;
- 位移位运算的一般形式:
<运算量> <运算符> <表达式>
其中,
(1)<运算量> 必须为整型结果数值;
(2)<运算符>为左移位(<<)或 右移位(>>)运算符;
(3)<表达式> 也必须为整型结果数值。
例如:
unsigned char a=0xe4, b;
b=a<<3;
- 赋值运算符与复合赋值运算符
C语言的赋值复合运算符如下:
- 赋值运算符为“=”,其运算的一般形式如下:
<左值表达式> = <右值表达式>
- 赋值复合运算符其运算的一般形式如下:
<变量> <操作符>= <表达式>
- 相当于下列式子:
<变量> = <变量> <操作符> <表达式>
x=y=15;
- C语言特殊运算符
1.条件运算符"? :"
条件运算符"? :"是一个三目运算符, 其运算的一般形式是:
<表达式1> ? <表达式2> : <表达式3>
- 例如,
int x=82, y=101;
x >= y ? x+18 : y-100 //运算结果为1
x < (y-11) ? x-22 : y-1 //运算结果为60
- 一个利用条件运算符代替if~else语句的例子。
- int main(int argc,char **argv)
- {
- int x, y=25;
- x=70; // 给x赋值为70
- y= x++ > 70 ? 100 : 0 ; // 给y赋值为0
- printf(“x=%d y=%d”, x, y);
- return 0;
- }
- 运行结果:
- x=71 y=0↙
2.sizeof运算符
- sizeof运算符运算的一般形式如下:
- sizeof(<类型或变量名>)
- 注意:它只针对数据类型,而不针对变量!
- 例如:
- sizeof(double)
- //计算结果为8 ,表明double类型占据8个字节
- sizeof(long)
- // 计算结果为4 ,表明long类型占据4个字节
- sizeof(char)
- //计算结果为1 ,表明char类型占据1个字节
- sizeof(float)
- //计算结果为4 ,表明float类型占据4个字节
案例:
- #include <stdio.h>
- int main(int argc, char **argv)
- {
- int n = 0;
- size_t intsize;
- intsize = sizeof (int);
- printf("n = %d, n has %d bytes; all ints have %d bytes.\n",
- n, sizeof (n), intsize );
- return 0;
- }
- C语言运算符优先级
C语言运算符的优先级和结合规律如下 ?:条件表达式右到左
![]() |