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();
文