首页 > 其他分享 >C语言操作符

C语言操作符

时间:2022-12-10 18:31:08浏览次数:38  
标签:10 int C语言 ++ num 操作符 sizeof

C语言的操作符分为:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号操作符、下标引用,函数调用和结构成员。 

​一、算术操作符

  +  -  *  /  %

1.除了%,其他均可以作用于整数和浮点数

2./:两个都是整数,整数除法,有浮点数就是浮点数除法

3.%要求两个操作数都是整数,返回整除后的余数

二、移位操作符(以二进制位)

1.<<左移操作符:左边抛弃、右边补零

2.>>右移操作符:分为两种 算术右移,右边抛弃,左边补原符号位(正数符号位是0,负数符号位是1)一般是算术右移。

                                         逻辑右移,右边抛弃,左边补零

使用:

int a=6;
int b=a<<1;

整数的二进制表示有原码、反码和补码,计算机以补码形式储存到内存。

正数原反补相同,用原码表示一个负数,符号位不变,其他位按位取反得到反码,反码+1得到补码(原码得到补码的快捷方法:从右到左,遇到的0不变,第一个1不变,这个1左边的所有位按位取反,但符号位不变)  

⚠:对于移位运算符,不要移动负数位,是标准未定义的如

Num=10,num>>-1//error

三、位操作符(按二进制位)

&  按位与   |  按位或   ^按位异或

&有0则0,都1则1,负数用补码表示

int a=2;
int b=3;
int c=a&b;

| 有1则1,全0则0

^相同为0,相异为1

它们的操作数都是整数

//例题:不创建临时变量实现两个数交换。
#include<stdio.h>
int main(){
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
return 0;
}
//法二:加减法
a=a+b;
b=a-b;
a=a-b;
//缺点:a+b可能会溢出
//求一个整数存储在内存中的二进制中1的个数
#include<stdio.h>
int main(){
//法一
int num=10;
int count=0;//计数
while(num){
if(num%2==1)
count++;
num=num/2;
}
}
return 0;
//法二
int num=0;
int count=0;
scanf("%d",&num);
int i=0;
for(i=0;i<32;i++){
if(i==((num>>i)&1))
count ++;
}
}

四、赋值操作符=

可以在一条语句中连续赋值(不建议)

五、复合操作符

+=    -=    *=    /=    %=    >>=    <<=    &=    |=    ^=

六、单目操作符

!逻辑反操作    -负值    +正值    &取地址    sizeof操作数类型长度(以字节为单位)    ~对一个数的二进制按位取反    --前置后置--    ++前置后置++    *间接访问操作符(解引用操作符)    ()强制类型转换

int a=10;
int* p=&a;
*p=20;//指针
sizeof(a)==sizeof(int)//变量的()可以省略,类型的 ()不能省略
sizeof(p)==sizeof(int*)
int arr[10]={0};
sizeof(arr)==sizeof(int [10])
int a=10;
short s=0;
sizeof(s=a+5)//2

最后s值不变,还是0,sizeof()里的式子不参与运算。

int a=0;//0是整数
//00000000000000000000000000000000
//11111111111111111111111111111111补码
//11111111111111111111111111111110反码
//10000000000000000000000000000001原码
//输出原码-1
printf("%d\n",~a);

++a,先++,后使用,a++,先使用,后++,--同理

七、关系操作符

 >    >=    <    <=    !=    ==(不要写成=)

八、逻辑操作符

&&逻辑与全真为真,有假为假   ||逻辑或有真为真,全假为假

int i=0,a=0,b=2,c=3,d=4;
i=a++&&++b&&d++//a++是0,为假,右边就不再算了
//a=1,b=2,c=3,d=4
//若改a=1,结果为1335
//若该为||,结果为2234,a++为真,后面就不算了

九、条件操作符

exp1 ? exp2:exp3

如果exp1为真,表达式的结果为exp2的结果;如果exp1为假,表达式的结果为exp3的结果。

功能等同于if-else。

十、逗号操作符

用逗号隔开多个表达式,从左向右执行,前一个表达式会对后面的表达式产生影响,整个表达式的结果是最后一个表达式的结果(不能只算最后一个结果,最后的结果是整个表达式共同完成的)。

十一、下标引用、函数调用和结构成员

1.[]下标引用操作符  操作数:一个数组名+一个下标值

int arr[10];
arr[9]=10;//[]的两个操作数是arr和9

2.()函数调用操作符  一个或多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数的参数。

3.访问一个结构的成员

.  结构体.成员名

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

struct Stu
{
char name[20];
int age;
char id[20];
};
int main(){
int a=10;
struct Stu s1={"张三",20,"123456789"};
printf("%s\n",s1.name);
printf("%d\n",s1.age);
printf("%s\n",s1.id);
return 0;
}
struct Stu
{
char name[20];
int age;
char id[20];
};
int main(){
int a=10;
struct Stu s1={"张三",20,"123456789"};
struct Stu* ps=&s1;
printf("%s\n",(*ps).name);//ps->name
printf("%d\n",(*ps).age);//ps->age

补充:注释  //注释该行

                  /* */中间注释掉,可以多行,visual studio中有快捷键

增加可读性,删除不需要的代码

标签:10,int,C语言,++,num,操作符,sizeof
From: https://blog.51cto.com/u_15901728/5927827

相关文章

  • c语言获取系统时间跨平台方法及计算程序运行时间
    voidgetCurrentDateTime(char*current_datetime){time_tnowtime;structtm*timeinfo;time(&nowtime);timeinfo=localtime(&nowtime);intxtn=t......
  • 初识C语言(3)
    练习:求两个数中的较大值intmain(){intmax(intx,inty);inta=0;intb=0;intc=0;scanf("%d%d",&a,&b);c=max(a,b);printf("max=%d\n",c);retu......
  • C语言学习入门 (五) 指针
    直接引用char a;a = 10;程序内部是怎么操作的呢?其实,程序对变量的读写操作,实际上是对变量所在的存储空间进行写入或取出数据。就上面的代码而言,系统会自动将变量名a转换为......
  • 【C语言】03-关键字、标识符、注释
    一、关键字1.什么是关键字C语言提供的有特殊含义的符号,有些地方也叫做“保留字”。 2.一共有哪些关键字C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义......
  • C语言-第三天!
    关键字(32个)关键字说明​​auto​​声明自动变量​​short​​声明短整数​​int​​声明整数​​long​​声明长整数​​float​​声明单精度浮点型​​double​​声明双......
  • C语言运算符优先级列表
    初级运算符()、[]、->、.  高于  单目运算符高于算数运算符(先乘除后加减)高于关系运算符高于逻辑运算符(不包括!)高于条件运算符高于赋值运算符高于逗号......
  • C语言中的结构体与C++中的类异同
    从C语言到C++,是编程思想的进步,技术发展的结果吧,所以C++基本上是兼容C的语法的,C++的很多东西也是从C中继承过来的,然后再发扬,C语言的结构体便是C++中类的雏形。       ......
  • OC之【c语言结构体】
    <stdio.h>void//这个机构只能在函数内部使用//定义一个名为Student的结构体类型structintage;//年龄char*name;//姓名floatheight;//身高};......
  • C语言学习入门
    编译文件:cc-cone.ctwo.c 生成.o目标文件链接文件:ccone.otwo.o   默认生成a.out执行文件指定生成的可执行文件名 cc-ooneone.o 连续编译、链接:ccone.c......
  • JavaScript:操作符: 逗号运算符
    逗号运算符,是极少见的运算符,我们看一下代码理解一下逗号运算符的功能:先说结论,逗号运算符的优先级非常低,比赋值运算符=还要低;同时,逗号隔开的几个表达式,都会各自进行计算,......