C语言之操作符

1、操作符简介

1)算术操作符:+  -  *  /  %

2)移位操作符:>>  <<

3)位操作符:&  ^  |

4)赋值操作符:=  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

5)单目操作符(只有一个操作数)

单目操作符

含义

!

逻辑反操作

-

负值

+

正值

&

取地址

sizeof

操作数的类型长度(以字节为单位)

~

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

--

前置、后置--

++

前置、后置++

*

间接访问操作符(解引用操作符)

(类型)

强制类型转换

6)关系操作符

关系操作符

含义

>

 

>=

 

<

 

<=

 

!=

用于测试“不相等”

==

用于测试“相等”

7)逻辑操作符:逻辑与&&、逻辑或||、逻辑非!

8)三目运算符(条件操作符):exp1 ? exp2 : exp3

9)逗号表达式:exp1, exp2, exp3, …expN

10)下标引用、函数调用和结构成员:[]  ()  .  -> 

注意:

一个等号“=”是赋值操作符。两个等号“==”是关系操作符,用于测试“相等”.

2、详细介绍

1)算数操作符

除法运算中注意

如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000

取余运算中注意

取余运算只适合用两个整数进行取余运算,如:10%3 = 1;而10.0%3则是错误的。运算后的符号取决于被模数的符号,如(-10)%3 = -1;而10%(-3) = 1;

%%表示这里就是一个%符。

注意

①、C语言中没有乘方这个运算符,也不能用×,÷等算术符号。

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

③、对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

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

2)<< 左移操作符、>> 右移操作符

移位操作符的操作数只能是整数。

①、左移操作符,移位规则:左边抛弃、右边补0

②、 右移操作符,右移运算分两种

  • 逻辑移位:左边用0填充,右边丢弃

    算术移位:左边用原该值的符号位填充,右边丢弃

注意:对于移位运算符,不要移动负数位,这个是标准未定义的。

3)位操作符

&    按位与:按位与,同时为1则为1,有一个0则为0

|      按位或:按位或,同时为0则为0,有一个1则为1

^     按位异或:按位异或,对应的二进制相同为0,相异为1

注意:他们的操作数必须是整数

4)自增与自减运算符

自增运算符++,使变量的值自增1。自减运算符--,使变量值自减1自赠与自减运算符经常使用在循环中。

自增自减运算符有以下几种形式:

5)赋值运算符和复合赋值运算符

C语言中赋值运算符分为简单赋值运算符复合赋值运算符,复合赋值运算符就是在简单赋值符=之前加上其它运算符构成。

简单赋值运算符:=

复合赋值运算符:+=、-=、*=、/=、%=

定义整型变量a并赋值为3a += 5;这个算式就等价于a = a+5; 将变量a5相加之后再赋值给a

注意:复合运算符中运算符和等号之间是不存在空格的。

6)关系运算符

关系表达式的值是真和假,在C程序用整数10表示。

注意

①、>=, <=, ==, !=这种符号之间不能存在空格

②、一个等号“=”是赋值操作符。

③、两个等号“==”是关系操作符,用于测试“相等”

7)逻辑运算符

逻辑运算的值也是有两种分别为真和假,C语言中用整型的10来表示。

其求值规则如下:

①、与运算 &&参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 && 7>5,运算结果为真

②、或运算 ||。参与运算的两个变量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如:5>=5||5>8,运算结果为真

③、非运算!。参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>8),运算结果为真

8)三目运算符

C语言中的三目运算符:?:,其格式为:表达式1 ? 表达式2 : 表达式3;

执行过程是:先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3

#include <stdio.h>
int main()
{
    double money = 12.0;
    double cost = 11.5;
    printf("小王能不能打车回家:");
    printf("%c\n",money>=cost?'y':'n');
    return 0;
}

9)逗号表达式

exp1, exp2, exp3, …expN

逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

10)下标引用、函数调用和结构成员

[ ] 下标引用操作符

操作数:一个数组名 + 一个索引值

( ) 函数调用操作符

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

访问一个结构的成员

. 结构体.成员名

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

例:

用结构体描述学生

int float 都是数据类型

struct Stu 是学生的类型

类型是用来创建变量的,此处创建了一个结构体类型,类型名struct Stu

struct Stu

{

       //成员变量

       char name[20];

       int age;

       char id[20];

};

//用结构体描述学生

//int float 都是数据类型

//struct Stu 是学生的类型

//类型是用来创建变量的。例 int a = 1;

//使用struct Stu这个类型创建了一个学生对象s1,并初始化。

struct Stu s1 = { "张三",18,"20001001" };

//结构体变量.成员名

printf("%s\n", s1.name);

printf("%d\n", s1.age);

printf("%s\n", s1.id);

struct Stu* ps = &s1;//地址,放到指针变量中,指针类型是 元素类型*

printf("%s\n", (*ps).name);//(*ps) 解引用操作,获得地址里面的内容

printf("%d\n", (*ps).age);

printf("%s\n", (*ps).id);

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

printf("%s\n", ps->name);

printf("%d\n", ps->age);

printf("%s\n", ps->id);

3、运算符大比拼之优先级比较

各种运算符号的顺序

优先级别为1的优先级最高,优先级别为10的优先级别最低。

复杂表达式的求值有三个影响的因素。

1)操作符的优先级

2)操作符的结合性

3)是否控制求值顺序。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挨踢路人王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值