算数操作符
1.除了取余%操作符外,其他的操作符可以作用于整数和浮点数; 2.对于除/操作符,如果两个操作数都为整数,则执行整数除法;而操作数只要有浮点数执行的就是浮点数除法; 3.取余%操作符的两个操作数必须为整数,返回的是整除之后的余数。
#include<stdio.h>
void main()
{
int a = 3, b = 2;
double c = 1.5;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);
printf("a + c = %.2f\n", a + c);
printf("a - c = %.2f\n", a - c);
printf("a * c = %.2f\n", a * c);
printf("a / c = %.2f\n", a / c);
}
移位操作符
左移操作符移位规则:
左边抛弃,右边补0;
右移操作符移位规则: 右移运算分为两种:
1.逻辑移位,左边用0填充,右边丢弃; 2.算术移位,左边用原该值的符号位填充,右边丢弃。 如果操作数是无符号数即是逻辑移位,如果操作数是带符号数,是算术移位。
代码示例:
正整数a左移n位的值为(a*(2^n)); 正整数a右移n位的值为(a/(2^n));
#include<stdio.h>
void main()
{
int a = 10;
printf("%d\n", a << 2);
printf("%d\n", a >> 2);
int b = -10;
printf("%d\n", b << 2);
printf("%d\n", b >> 2);
}
位操作符
其操作数必须位整数
代码示例:
#include<stdio.h>
void main()
{
int num1 = 1;
int num2 = 2;
int x = num1 & num2;
int y = num1 | num2;
int z = num1 ^ num2;
printf("%d %d %d", x, y, z);
}
赋值操作符
符号 | 表达式 | 含义 |
---|
= | a = 10 | 将10赋给a | += | a += 10 | a = a+10 | -= | a -= 10 | a = a-10 | *= | a *= 10 | a = a*10 | /= | a /= 10 | a = a/10 | %= | a %= 10 | a = a%10 | >>= | a >>= 10 | a = a>>10 | <<= | a <<= 10 | a = a<<10 | &= | a &= 10 | a = a&10 | |= | a |= 10 | a = a|10 | ^= | a ^= 10 | a = a^10 |
单目操作符
符号 | 含义 | | | 符号 | 含义 |
---|
! | 逻辑取反 | | | ~ | 按位取反 | - | 负值 | | | - - | 自减 | + | 正值 | | | ++ | 自增 | & | 取地址 | | | * | 间接访问操作符(解引用操作符) | (类型) | 强制类型转换 | | | sizeof | 操作数的类型长度(以字节为单位) |
注意:sizeof是操作符,可以求变量(类型)所占空间的大小
前++或前- - | 后++或后- - |
---|
先自增或自减再进行其他运算 | 先进行其他运算后再自增或自减 |
关系操作符
符号 | 含义 |
---|
> | 大于 | >= | 大于等于 | < | 小于 | <= | 大于 | != | 用于测试“不相等” | == | 用于测试“相等” |
在编程过程中注意==与=的使用
逻辑操作符
对于按位操作符和逻辑操作符要加以区分 逻辑操作符会返回一个布尔值
代码示例:
#include<stdio.h>
void main()
{
printf("1&&2 = %d\n", 1 && 2);
printf("1&2 = %d\n", 1 & 2);
printf("1||2 = %d\n", 1 || 2);
printf("1|2 = %d\n", 1 | 2);
}
逻辑与&&与逻辑或||都是短路操作符; 当逻辑与&&的第一个操作数为假时便不再往后执行,结果必为假; 当逻辑或||的第一个操作数为真时便不再往后执行,结果必为真。
代码示例:
#include<stdio.h>
void main()
{
int i = 0, a = 0,b = 2,c = 3, d = 4;
i = a++ && ++b && d++;
printf("i=%d\n", i);
printf("a=%d\n", a);
printf("b=%d\n", b);
printf("c=%d\n", c);
printf("d=%d\n", d);
}
条件操作符
exp1 ? exp2 : exp3 |
---|
当exp1为真时,结果为exp2;否则结果为exp3 |
#include<stdio.h>
void main()
{
int a = 6;
int b;
if (a < 5)
{
b = 3;
}
else
{
b = -3;
}
printf("b = %d\n", b);
int c;
c = (a < 5) ? 3 : -3;
printf("c = %d\n", c);
}
逗号表达式
用逗号隔开多个表达式,从左向右依次执行; 整个表达式的结果时最后一个表达式的结果。
代码示例:
#include<stdio.h>
void main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("c = %d\n", c);
int d = -3;
if (a = b + 1, c = a / 2, d > 0)
{
printf("真\n");
}
else
{
printf("假\n");
}
}
|