首页 > 编程知识 正文

c语言运算符优先级口诀(c语言位运算)

时间:2023-05-04 00:15:19 阅读:90322 作者:258

1 .算术运算符:

加号运算符:

负运算符: -

乘法运算符:*

除法运算符:/

求出余数运算符:%

加法运算符:

减法运算符:-

特别要注意:和-不同情况下的含义

自加法和自减法:

I、----I、I、I----

在使用I之前,首先对I的值加(减) 1,在使用I之后,对I的值加(减) 1

特别是,自增运算符和自减运算符只能用于变量,不能用于常量和表达式

计算表达式时,首先按照运算符的优先级执行。 例如,先乘除再加减。 如果一个运算对象两侧的运算符具有相同的优先级,则根据连接方向“从左到右”,先从左到右执行。

、/运算的两个数中有一个是浮点或双精度型,结果是双精度型。

运算int型、float型或double型的数据时,首先将int型和float型的数据转换为double行进行运算,结果为double型。

运算字符类型数据和整数数据就是运算字符的ASCII代码和整数数据。

一般格式:

(类型名称) )表达式) )。

(双精度) a )将a转换为双精度类型

(int ) ) x y ) :将x y的值变换为int型

2 .关系运算符:

c语言有六个关系运算符。

(小于)、

=(以下)、

(大于)、

=*以上,**前4个优先级相同**,前4个比最后2个高

===等于,**后的两个优先顺序也相同**

!=((不等于) () ) ) ) ) ) )。

注:在c语言中,“等于”关系运算符是等号“=”,不是等号“=”(赋值运算符)。

优先级

关系运算符中,前4个优先级相同,后2个也相同,前4个比后2个高。

与其他类型运算符的优先关系:

算术运算符优先关系运算符的优先赋值运

3 .逻辑运算符:

此外,在:上运算时必须使用关键字符。 这意味着将两个或多个表达式合并为一个。 所有表达式必须为true,整个表达式必须为true。 否则就是假的。

或||:或运算时必须使用关键字符||。 这意味着将两个或多个表达式合并为一个,如果其中一个表达式为true,则整个表达式为true。 仅当所有表达式均为false时,整个表达式才为false;

非:非运算需要关键字符。 以反转单个表达式的结果。 如果原始表达式的结果为false,则在表达式之前添加运算符。 如果结果相反,则为true; 如果的计算结果为true,则在表达式前面加上运算符。 如果颠倒结果,则为false;

4 .位运算符:

运算符的含义

按比特

按位或

^按比特的异或

采取~反

向左移动

向右移动

5 .赋值运算符:简单赋值运算符

简单赋值运算符的使用格式是v=e。 e可以是常数、变量或表达式。 如果v和e的类型不同,则在赋值过程中会发生类型转换,将e的值转换为v型的值并分配给v。

在c语言中,代入操作产生结果,其结果为v的值。 因此,赋值表达式可以作为操作数嵌入到其他表达式中,在表达式中是右键。 但是,不建议这样使用,因为代码可能变得模糊,可能会发生隐式错误。

=用于初始化变量的int v=e不生成结果。 因此,此时不是运算符,而是与所有元素一起构成初始化语句。

代入公式左边的操作数必须是左边的值,也就是计算机存储单元中存储的对象,不能是常数和计算结果。

.复合赋值运算符

复合赋值运算符的使用形式为v op=e,等价于v=v op e。 其中,op的-,*,/,%,^,|,以下3个是比特单位运算符。

自我增加和自我减少的运算符

对于i =1和i--=1,c语言提供了自我增加和自我减少--运算符将这个句子缩短得更简洁的缩写I,I--。 但是,形式上的简化并不是带来复杂性的简单。 因为既可以执行前缀运算符,也可以执行后缀运算符,所以执行起来有不同的含义。 I和--i表示立即递增或递减I,I和i--表示首先用I的值计算,然后在执行语句之前递增或递减I。 优先顺序高于后缀和--单元符号,都是左结合,前缀、--运算符和单元符号的优先顺序相同,都是右结合。

6 .条件运算符

虽然c语言的条件运算符很少使用,但为了加深理解,我们做如下叙述。

运算符是什么?

公式是公式1吗? 式2 :式3

如果先求解式1,

在该值为真(0以外)的情况下,将式2的值作为整个式的可取值,

否则,(式1的值为0 )式3的值为式全体可取的值。

例如:

max=(阿瑟? a:b乙

就是分配a和b中较大的一个

给max。

7.逗号运算符:在C语言中,逗号“,”的用法有两种:一种是用作分隔符,另一种是用作运算符。

在变量声明语句、函数调用语句等场合,逗号是作为分隔符使用的。

例如:

int a,b,c;

scanf('%f%f%f',&f1,&f2,&f3);

C语言还允许用逗号连接表达式。例如x=5.6,y=2.1,10+x,x+y这里用三个逗号运算符将四个算术表达式连接成一个逗号表达式。

8.指针运算符:

指针就是地址,指针也是C语言的一种数据类型

用指针类型定义的变量称作指针变量,指针变量储存的不是普通数据而是一个地址,一个变量的地址称为该变量的指针。

指针变量定义的一般形式为:

类型标识符 * 变量名

星号是指针类型的标志。

C语言指针变量的使用需要以下两个运算符

&:取地址运算符,它返回运算对象的内存地址。

* :指针运算符,也称为“间接引用操作符”,它返回指针指的变量的值。

9.求字节数运算符:字节数运算符是一个单目运算符,该运算符的作用是求得某种类型或者变量在内存中所占字节数。其使用格式如下:

  sizeof(<类型说明符>)或者sizeof(<变量名>)

  sizeof是一个比较特殊的运算符,因为sizeof运算符多了一个括号,这很容易让人认为这是一个函数而不是一个运算符,操作数只是函数的参数罢了。这一点特别需要引起注意,sizeof不是函数,它是一个运算符。

10.强制类型转换运算符:

一般形式: (类型名)(表达式常量变量)

(double)a

不管a原来是什么类型,此时临时将其强制变成double类型。

例:

(int)(x+y)将x+y的值转换为整型

(float)(5%3) 将5%3的值转换成单精度型2.0

(double)a 将a变成double型

注意:

优先级2级

(int)(x+y)与(int)x+y 【转换x加y的意思】意义不同

类型转换得一个中间值,原变量类型没有发生变化。

11.成员运算符:

C语言中:

我们临时定义一个结构体:

struct StuInfo{

int num;

char name[20];

char sex;

float score;

};

//初始化两个结构体类型的变量,和一个指向定义结构体类型的指针变量

struct StuInfo student1;

struct StuInfo Student2;

struct StuInfo* ptr;

//初始化指向结构体类型的指针变量

ptr = &Student2;

访问这两个结构体成员时,用成员运算符还是指针运算符:

student1是一个StuInfo结构体类型的变量,引用它时只能用成员运算符(.)即:

student1.num ,student1.sex等;

ptr 是一个指向StuInfo结构体类型的指针变量,注意它是指针变量,故按传统方式访问它的成员时,我们可以用解除引用运算符(C++中定义,相应的引用运算符为&)访问成员:(*ptr).num, (*ptr).score等,注意*ptr要括起来,因为所有运算符优先级中成员运算符(.)的优先级最高,这样是不是很不方便,也容易出错,为了方便和直观,C语言规定可以用指针运算符(-〉,有些书中称为指向运算符,但我觉得指针运算符更确切些。)代替,即

ptr->num, ptr->name, ptr->sex等,这样方便了很多。

C++中:

其实和C差不多,只是C++中除了结构体之外还多了类的概念。

Class Human {

//Data attributes:

string Name;

string BirthDay;

string Gender;

//Method:

void Talking(string TalkContent);

void IntroduceSelf();

...

};

Human Tom;

Human* p;

p = &Tom;

Tom.BirthDay = "1969“;

Tom.IntroduceSelf();

效果等价于:

p->BirthDay = "1969";

p->IntroduceSelf();

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。