【C语⾔】运算符与操作符的⽤法全⾯汇总(⾮常有⽤)⼀.‘->’的⽤法
“->”是⼀个整体,它是⽤于指向结构体⼦数据的指针,⽤来取⼦数据。换种说法,如果我们在C语⾔中定义了⼀个结构体,然后申明⼀个指针指向这个结构体,那么我们要⽤指针取出结构体中的数据,就要⽤到“->”。
p=p->next ,意思是将p指向的⼀个结构体实例中的⼦数据next赋值给p。
->的作法就是在引⽤结构体中的变量!
扩展资料:
在C语⾔中,结构体(struct)指的是⼀种数据结构,是C语⾔中聚合数据类型(aggregate data type)的⼀类。结构体可以被声明为变量、指针或数组等,⽤以实现较复杂的数据结构。结构体同时也是⼀些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员⼀般⽤名字访问。
⼆.‘[ ]’的⽤法
数组的下标,定义数组以⽤于数组操作
⽐如int a[6];
就是定义⼀个⼀维数组,这个数组名叫做 a ,共有6个元素
同理int b[6][6]
就是定义⼀个⼆维数组,这个数组共有6*6个元素
三 ‘.’的⽤法
⽤在⼀般结构体变量中,直接调⽤结构体中的某个成员
如: student.name
扩展资料:
成员运算符(·)和指向结构体成员运算符(->)的区别:
两者都是⽤来引⽤结构体变量的成员,但它们的应⽤环境是完全不⼀样,前者是⽤在⼀般结构体变量中,⽽后者是与指向结构体变量的指针连⽤,例如:有定义
struct student
{
long num;
float score;
};
struct student stud, *ptr=&stud;
则stud.num、stud.score、ptr->num等都是正确的引⽤⽅式,但ptr.num、stud->num就是不允许的,其实ptr->num相当
于(*ptr).num,只是为了更为直观⽽专门提供了这->运算符。
最后指出,这两者都具有最⾼优先级,按⾃左向右的⽅向结合。
四 ‘!’的⽤法
!为逻辑运算符 “⾮”,⽤来改变条件的逻辑状态,如果条件为真则改变为假
!a
其运算规则为,
1 如果a的值为0,则运算结果为1;
2 如果a的值⾮0,则运算结果为0。
举例: a!=9 就是a不等于9
五 ‘逻辑与&&和逻辑或||’的⽤法
&&(与) 和 || (或)都是⾥常⽤的,⼀般⽤法是 if(表达式1 || 表达式2) 或者 if(表达式1 && 表达式2)
|| 表⽰ 或 只要有⼀个⾮0,整个表达式就为真,就满⾜if判定的条件
switch的用法c语言例如 if(1 || 0) ;
1为真 0为假 此判断条件为真
&& 表⽰ 且 if括号内的表达式都为真 才能满⾜if判定的条件 才会执⾏if{}⾥的语句
六.⾃增运算符++,⾃减运算符--’的⽤法
如果单独写 ⾃增运算符为⼀个语句,⼆者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是++和--在变量前后的时候,则是会有不同
++在前
例如: ++a;
说明: ++在前时,b会先⾃加1,然后才赋值给a
举例: int a, b = 1;
a = ++b; //b增加⾄2,a得到的值为2
++在后
例如: a++;
说明: ++在后时,b赋值给a,再进⾏⾃加
举例: int a, b = 1;
a = b++; //b增加⾄2,a得到的值为1
在操作数之前的操作符(++b)在变量值在被使⽤之前增加它的值;在操作数之后的操作符(b++)在变量值被使⽤之后才增加的值。扩展资料:
++a 与 a++ 不能被赋值 ,因为他们本⾝只是拷贝了变量的值,并不是变量本⾝,你⽆法向⼀个值进⾏赋值
int a = 1;
++a = 5;
这样⼦是错误的!
七.取地址运算符 &和指针运算符*
取地址运算符 &
& 是⼀元运算符,返回操作数的内存地址。例如,如果 var 是⼀个整型变量,则 &var 是它的地址。该运算符与其他⼀元运算符具有相同的优先级,在运算时它是从右向左顺序进⾏的。
您可以把 & 运算符读作"取地址运算符",这意味着,&var 读作"var 的地址"。
和指针运算符*
*运算在C语⾔中,有两种作⽤:
1 ⽤作乘法,为,形式为a*b, 就是中的a乘以b。
2 ⽤作取值运算,为,根据后续操作数(必须为指针)类型,取其指向的值。
所谓的指针,本质上就是地址。 指针变量的值,就是地址的值,当取值运算时就是到对应的上,依照指针类型进⾏取值。
⼋.长度运算符sizeof’的⽤法
sizeof操作符计算的是变量(类型)所占空间的⼤⼩,是按字节来计算
sizeof是运算符,不是函数
该运算符在编译阶段就已经起作⽤了。它以字节为单位返回其操作数的⼤⼩。它的操作数可以是数据对象也可以是⼀个类型。如果是类型那么操作数需要⽤圆括号括起来。
如:sizeof(int)=4;
sizeof(char) 等于1
sizeof以byte为单位返回操作数的⼤⼩
扩展资料:
(0)sizeof是运算符,不是函数;
(1)sizeof不能求得void类型的长度;
(2)sizeof能求得void类型的指针的长度;
(3)sizeof能求得静态分配内存的数组的长度!
(4)sizeof不能求得动态分配的内存的⼤⼩!
(5)sizeof不能对不完整的数组求长度;
(6)当表达式作为sizeof的操作数时,它返回表达式的计算结果的类型⼤⼩,但是它不对表达式求值!
(7)sizeof可以对函数调⽤求⼤⼩,并且求得的⼤⼩等于返回类型的⼤⼩,但是不执⾏函数体!
(8)sizeof求得的结构体(及其对象)的⼤⼩并不等于各个数据成员对象的⼤⼩之和!
(9)sizeof不能⽤于求结构体的位域成员的⼤⼩,但是可以求得包含位域成员的结构体的⼤⼩!
九.算术运算符+=*/% 和关系运算符><=
操作符
功能>
⼤于>=
⼤于等于<
⼩于<=
⼩于等于!=
不等于==等于
操作符
功能+=
相加之后赋值-=
相减之后赋值*=
相乘之后赋值/=
相除之后赋值%=
取余之后赋值>>=
右移之后赋值<<=
左移之后赋值⼁=
按位或之后赋值^= 按位与
这些都很简单,应该不⽤过多介绍
单⽬就是这个运算符只对⼀个变量进⾏操作
举例:int a=1;a++;(第⼆句“a++”则只对a⼀个变量进⾏了操作)
双⽬就是这个运算符对两个变量进⾏操作
举例:int a=1,b=2,c;c=a+b;(第⼆句“c=a+b”则是对a,b两个变量进⾏了操作)
三⽬就是这个运算符对三个变量进⾏操作
⼗.?表达式
条件1 ? 表达式2 : 表达式3
是否满⾜条件1,如果满⾜则执⾏操作2,否则执⾏操作3。
条件运算符是C语⾔中唯⼀的⼀个三⽬运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常⽤于赋值语句之中。
我们可以把想成这样
求两个数中最⼤的⼀个
if(a>b){
max = a;
}else{
max = b;
}
⽽⽤?表达式
max = (a>b) ? a : b;
如a>b为真,则把a赋予max,否则把b 赋予max。
是不是很节约代码,⼜显的⾼级
⼗⼀.位操作符与位移操作符
C语⾔提供了六种位运算
位运算符含义举例
&(and)按位与a&b
| ( or )按位或a|b
^ ( xor )按位异或a^b
~ ( not )按位取反~a
<< ( shi )左移a<<1
>> ( shr )右移a>>1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论