c语言操作符

xiaoxiao2021-02-28  38

算术操作符

+    -    *    /    %

1、除%之外,其他的几个操作符可以作用于整数和浮点数

2、%操作符的两个操作数必须为整数,返回的是整除之后的余数

移位操作符

警告!:对于移位操作符不可移动负数位,这个标准是未定义的

<<左移操作符

    有乘2的效果

>>右移操作符

    1、逻辑移位

        左边用0填充,右边丢弃

    2、算术移位

        左边用原该值的符号填充,右边丢弃

编译器中的移位是算术移位

位操作符

& //按位与 | //按位或 ^ //按位异或(相同为0,相异为1)

单目操作符

sizeof    操作数的类型长度(以字节为单位)[sizeof内部表达式不参与运算]

&     取地址

~      对一个数的二进制按位取反

*        解引用操作符

1、sizeof(数组名)——数组名表示整个数组。求整个数组的大小,单位是字节。

2、&数组名——数组名表示整个数组。取出的是整个数组的地址

3、除此之外,所有遇到的数组名降级变为首元素的地址

前置++(--):  先自增(自减),后使用

后置++(--):先使用,后自增(自减)

关系操作符

注意区分‘=’与‘==’的区别

逻辑操作符

#include<stdio.h> #include<stdlib.h> int main() { int i=0,a=0,b=2,c=3,d=4; i=a++&&++b&&d++; printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);//输出结果为1,2,3,4 system("pause"); reyurn 0; }

因为a=0,所以a++&&++b&&d++不执行后面的部分(注意逻辑与和逻辑或的特点)

条件操作符

exp1?exp2:exp3//exp1为真,执行exp2;exp1为假,执行exp3

逗号表达式

从左向右依次执行,整个表达式的结果是最后一个表达式的结果

int a=1; int b=2; int c=(a>b,a=b+10;a,b=a+1);

 下标引用

[ ]

操作数:数组名+索引值

int arr[10];//创建数组 arr[9]=10;//使用下标引用操作符

[ ]的两个操作数是arr和9

函数调用操作符

()接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

访问一个结构体的成员

1、.结构体.成员名

2,->结构体指针->成员名

struct Stu { char name[10]; int age; char sex[5]; double score;

};//创建一个结构体变量

隐式类型转换

c的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通型,这种转换称为“整型提升”

char a,b,c; …… a=b+c;

b和c的值被提升为普通整型,然后再进行加法运算。

加法运算完成之后,结果将被截断,然后再存储于a中。

算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数类型,否则操作就无法进行。

寻常算术转换:

long double

double

float

unsigned long int

long int

unsiged int 

int

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另一个操作数的类型后执行运算。

操作符的属性

1、操作符的优先级

2、操作符的结合性

3、是否控制求值顺序

两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者优先级相同,取决于他们结合性。

警告操作符的警告

转载请注明原文地址: https://www.6miu.com/read-2630755.html

最新回复(0)