详解操作符(中)

简介: 详解操作符(中)

6 单目操作符

a+b,+就是一个双目操作符,因为+两边都有数值,单目操作符就是操作符仅一个操作数

 

逻辑反操作(!):在C语言中,0表示假,!0表示真  。例如:10表示真,则!10输出的就是0。

此时友友们就会想,!0会不会就是任意一个数值,答案是不是的,!0的值是固定的,是1。

(! 真变成假,假变成真)

正值(+),负值(-),一个数a=10,那么+a就是10,-a就是-10;一个数b=-10,那么+b就是-10,-b就是10。

知识点:

abs(对整数取绝对值)   fabs(对小数取绝对值)#include <math.h>

取地址符号(&),取地址用的,可以知道储存在内存中的地址。

操作数的类型长度(以字节为单位)(sizeof):计算的是变量或者类型所创建变量占据内存的大小。

上图中把a去掉,就是类型,sizeof(类型)也可以。int arr[10]呢?答案是也可以的

sizeof(类型)括号不可以省略,变量可以 但是中间需要一个空格

对一个数的补码的二进制按位取反(~)(0变成1,1变成0),打印的是原码

0的原码反码补码都是000000000000000000000000000000000

给一个数10 ,  00000000000000000000000000001010,把倒数第三个0变成1,这个数按位或0000000000000000000000000000000100(也可以表示成1<<2)即可变成000000000000000000000000000001110

现在倒回去,把00000000000000000000000000001110的倒数第三个数字变成0,这个数按位与11111111111111111111111111011(按位取反 1<<2)即可

前置、后置++  前置后置--

前置++:先++,后使用         后置++:先试用,后++

++a,那么结果都是11

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

1. #include <stdio.h>
2. int main()
3. {
4.  int a = 10;//在空间内存创建一个变量a,内存的地址叫做m,
5.  int* pa = &a;//指针变量int*   创建一个变量pa存放地址m
6.  *pa = 20;//通过指针找到a,用*pa,改变pa的值就是改变a的值
7.  printf("%d ", a);
8.  return 0;
9. }

*pa就是a,&*pa与&a相同。(不管什么元素的指针,它的大小4个字节就是8个字节,例如:不在主函数内的sizeof(ch)的值为4/8.。,char  ch[10] ={0}, (×86环境——32个字节——4个字节)(×64环境——64个字节——8个字节))

强制类型转换(类型):例如,3.14是一个double类型数字,把它转换成int类型,即 (int)3.14

int b =  3.14会报错 ,为了不报错加上(int)

7 关系操作符

这个就比较简单了,就是大于,大于等于,小于,小于等于,不等于,等于(注意,判断相等,用两个等号)

8 逻辑操作符

按位与和按位或 关注二进制,   逻辑与和逻辑或只关注真假

1<a<5 这样写是错误的,如果a = 2,1<2为真,就为1,1<5为真。

因为a++为后置++,a++为1,a为2,所以逻辑或,一真就全部为真,所以++b,d++并没有计算,所以b和d仍然为2,4.所以a b c d为2 2 3 4.

总结:

&&左操作符为假,右边不计算                         || 左操作为真,右边不计算

9 条件操作符

这个操作符也叫三目操作符

条件操作符就是简化if语句。exp1为真,就输出exp2, exp1为假,就输出exp3.

if语句

简化if语句

10 逗号表达式

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式会从左向右依次计算,整个逗号表达式的结果是最后一个表达式的结果。

if(a >b,c = b/2,d > 0)   这个语句中起作用的是d > 0.

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

11.1 [ ] 下标引用操作符

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

int arr[ 10] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n",arr[7]);

上面的[ ]就是下标引用操作符,arr ,7 就是操作数

arr数组首元素地址,arr+7就是第8个元素的地址,*(arr+7)就是arr[ 7 ],*(arr+7)可以写成*(7+arr),那么就可以写成7[ arr ].

11.2 ( )函数调用操作符

test( )中的 函数调用操作符,在函数那个章节有详细说明,在这里就不赘述了

11.3 访问一个结构的成员

.    结构体.成员名

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

1. #include <stdio.h>
2. struct Stu
3. {
4.  char name[20];
5.  int age;
6.  double score;
7. };
8. int main()
9. {
10.   struct Stu s = { "zhangsan", 20, 85.5};
11.   printf("%s %d %.1lf\n", s.name, s.age, s.score);//结构体变量.结构体成员
12.   struct Stu* ps = &s;
13.   printf("%s %d %.1lf\n", (*ps).name, (*ps).age, (*ps).score);
14.   printf("%s %d %.1lf", ps->name, ps->age, ps->score);//结构体指针->结构体变量
15.   return 0;
16. }

相关文章
|
2月前
|
存储 C++
C/C++中位操作符(&,|,^,~)的详解使用
C/C++中位操作符(&,|,^,~)的详解使用
|
7月前
|
存储 索引
【操作符】
【操作符】
21 0
|
6天前
|
编译器 索引
操作符详解3
操作符详解3
11 0
|
5月前
|
存储 编译器
操作符详解(1)
操作符详解(1)
24 0
|
9月前
操作符详解(一)
操作符详解(一)
55 0
|
9月前
|
Linux C++ 索引
操作符详解(二)
操作符详解(二)
60 0
|
10月前
|
编译器
详解操作符(下)
详解操作符(下)
|
10月前
|
编译器
详解操作符(上)
详解操作符(上)
|
10月前
|
存储
|
11月前
OR操作符
OR操作符
46 0