C语言基本运算符号(c语言基本运算符)

1.算术运算符:

正号运算符: +

负号运算符: -

乘法运算符:*

除法运算符:/

求余运算符:%

加法运算符:+

减法运算符:-

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

自加与自减运算:

++i,--i,i++,i--

在使用i之前,先是i的值加(减)1,在使用i之后,使i的值加(减)1

特别注意:自增和自减运算符只能用于变量,而不能用于常量或表达式

在表达式求值时,先按运算符的优先级别顺序执行,例如先乘除后加减。如果在一个运算对象两侧的运算符的优先级别相同,则按照结合方向“自左至右”即先左后右执行。

+,-,*,/运算的两个数中有一个数为float或double型,结果是double型。

如果int型与float或double型数据进行运算,先把int型和float型数据转换为double行进行运算,结果是double型。

字符型数据与整型数据进行运算,就是把字符的ASCII代码与整数数据进行运算。

一般形式:

(类型名)(表达式)

(double)a:将a转换成double类型

(int)(x+y):将x+y的值转换成int型

2. 关系运算符:

C语言提供6种关系运算符:

<(小于),

<=(小于或等于),

>(大于),

>=(大于或等于), **前4个优先级相同**且前4个高于后2个

==(等于), **后2个优先级也相同**

!=(不等于)

注意:在C语言中,"等于"关系运算符是双等号"= =",而不是单等号"= "(赋值运算符)。

优先级

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

与其它种类运算符的优先级关系:

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

3.逻辑运算符&&:

且:且运算需要使用关键字符&&,表示将两个或者多个表达式连接成一个,所有表达式必须都为true,整个表达式才为true,否则为false;

或||:或运算需要使用关键字符||,表示将两个或者多个表达式连接成一个,任意一个表达式为 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可以是+,-,*,/,%,&,^,|,后三个为按位运算符。

自增和自减运算符

相对于i += 1和i-= 1,C语言提供了自增++和自减--运算符将这个语句进行更加简练的缩写i++, i--。但是形式上的精简却并没有带来复杂性的简单,因为它们既可以做前缀运算符也可以做后缀运算符,在执行中具有不同的意义。++i和--i意味着立即自增或自减1,而i++和i--意味着先用i的值进行计算,然后在下一条语句执行前在对i自增或自减。后缀++和--比一元正负号优先级高,且都是左结合的,前缀++和--运算符和一元正负号优先级相同,且都是右结合的。

6.条件运算符

C语言中的条件运算符运用的较少,为了加强大家对它的了解,叙述如下:

该运算符是 ? :

  表达式为:表达式1?表达式2:表达式3

  先求解表达式1,

  若其值为真(非0)则将表达式2的值作为整个表达式的取值,

  否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

  例如:

  max=(a>b)?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();

C语言基本运算符号(c语言基本运算符)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论