C操作符总结

操作符详解
操作符和表达式
目录
1:算术操作符
2:移位操作符
3:位操作符
4:赋值操作符
5:单目操作符
6:关系操作符
7:逻辑操作符
8:条件操作符
9:逗号表达式
10:下标引用,函数调用和数据结构

一;算术操作符

      • / %
        加 减 乘 除 取模
        特殊举例:
        1:#include<stdio.h>
        int main()
        {
        int a = 1;
        int b = 1++;
        int c = ++1;
        printf("%d,%d,%d\n",a,b,c);
        } // 1 ,1,2
        //总结:++在前先加加,++在后后加加
        2:#inciude<stdio.h>
        int main()
        {
        int a = 10;
        float b = 5.0;
        int c = a / b;
        printf("%d\n",c);
        } // c = 2.0 / 时如果有一个整数和一个浮点数想/结果为浮点数
        二;移位操作符

右移 << 左移(二进制移位)
相当于除以二
1,逻辑移位 左边用0填充,右边丢弃
2,算术移位 左边用原值符号位填充,右边丢弃
<< 相当于乘以二
1,左移之后前面补0;
三;位操作符
& 按位与 | 按位或 ^按位异或(他们的操作数必须是整数)
& 按位与
相当于乘法(二进制)
| 按位或
有1则1,无1则0
^按位异或
相异为1,相同为0
特殊举例:
1:#include<stdio.h>
int main()
{
int a = 20;
int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d,%d\n",a,b);\ 10;20 交换了a b
}
2:#include<stdio.h>
int main()
{
int a = -1;
int i = 0;
int count = 0;
while(a)
{
count ++;
a = a & (a - 1);
}
printf(“二进制中一的个数 = %d”,count);
} //输出二进制中一的个数

四:赋值操作符
=,+=,-=, /=, %=, >>=, <<= , &=, !=, ^=
举例:
#include<stdio.h>
int main()
{
int a = 10;
a += 2; // a = a + 2
printf("%d",a);
}//输出结果 12
五:单目操作符
! , - ,+ ,& ,sizeof ,~ ,-- ,++ , * ,(类型)
逻辑非,负值,正值,取地址,操作数类型长度,对一个数按位取反,前置后置–,++,解引用操作符,强制类型转换、
特殊举例:
1: #include<stdio.h>
int main()
{
int a = 10;
int *p = &a;
int **pp = &p;
int ***ppp = &pp;
***ppp = 99;
printf("%d\n", a);
system(“pause”);
return 0;
}//输出a = 99;
2: #include<stdio.h>
int main()
{
int a = 10;
int *p = NULL;
p = &a;
*p = 10;//预防野指针
return 0;
}
3: #include<stdio.h>
int main()
{
int a = -1;
a = ~a;
printf("%d\n", a);
system(“pause”);
return 0;
} // 0
4: #include<stdio.h>
//()强制类型转换
int main()
{
double d = 10.9;
int a = (int)d;
system(“pause”);
return 0;
} //将d由double强制转换为int
5:#include<stdio.h>
//sizeof和数组
void test1(int arr[])
{
printf("%d\n", sizeof(arr));//4
}
void test2(char ch[])
{
printf("%d\n", sizeof(ch));//4
}
int main()
{
int arr[10] = { 0 };
char ch[10] = { 0 };
printf("%d\n", sizeof(arr));//40
printf("%d\n", sizeof(ch));//10

	system("pause");
	return 0;
}

六:关系操作符

, >= ,< ,<= ,!= ,==
大于,大于等于,小于,小于等于,不等于,等于
! 注意 == 在判断是容易出错

七:逻辑操作符
&& , ||
逻辑与 ,逻辑或(均为短路语句)

八:条件操作符:
a ? b : c
//意思为如果a为真就执行b否则执行c;

九:逗号表达式:
a,b,c,…
特殊举例:
1:#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a ,b = a+1);
printf("%d\n",c);//输出 c = 13
return 0;
}
2://可将
a = get_val()
count_val(a);
while(a>0)
{
a = get_val();
count_val(a);
}
//改成
while(a = get_val(),count_val(a),a>0)
{
}
//逗号表达式输出结果为最后一个表达式

十:下标引用,函数调用和数据结构
1;下表引用操作符
操作数 :一个数组名 + 一个索引值
int arr[10];
arr[9] = 10;
[ ] 的两个操作数是arr和9;
2;函数调用操作符,
3;访问一个结构成员
特殊举例
#include<stdio.h>
struct stu
{
char name[10];
int age;
char sex[5];
double score;
};
void set_age1(struct Stu stu)
{
stu.age = 18;
}
void set_age2(struct Stu* pStu)
{
pStu->age = 18;//结构成员访问
}
int main()
{
struct Stu stu;
struct Stu* pStu = &stu;//结构成员访问

	   stu.age = 20;//结构成员访问
   	 set_age1(stu);

   	pStu->age = 20;//结构成员访问
	set_age2(pStu);
	 return 0;
	 }

猜你喜欢

转载自blog.csdn.net/belongHWL/article/details/90614005
今日推荐