单目操作符

简介: 单目操作符

本篇继续介绍操作符
目录

  1. 单目操作符

6.1 单目操作符介绍
6.2 sizeof 和 数组
6.3 ++ 和 - - 运算符

  1. 关系操作符
  2. 逻辑操作符
  3. 条件操作符
  4. 逗号表达式
  5. 下标引用、函数调用和结构成员

11.1 下标引用
11.2 函数调用
11.3 访问一个结构的成员
总结
)

  1. 单目操作符

6.1 单目操作符介绍
操作符 功能
! 逻辑反操作

  • 负值
  • 正值

& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反

    • 前置,后置- -

++ 前置,后置++

  • 间接访问操作符

(类型) 强制类型转换
代码演示:

include<stdio.h>

int main()
{

int a = -10;
int* p = NULL;
printf("%d\n", !2);
printf("%d\n", !0);
a = -a;
p = &a;
printf("%d\n",sizeof(a));
printf("%d\n", sizeof a);
printf("%d\n", sizeof(int));
//printf("%d\n", sizeof int);报错
return 0;

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行结果:

可以看出int型长度为4个字节

代码演示:

include<stdio.h>

int main()
{

int a = -10;
printf("%d\n", sizeof a);
printf("%d\n", sizeof int);//报错
return 0;

}
1
2
3
4
5
6
7
8

注意:第七行报错,应输入表达式printf("%d\n",sizeof(int));,不带括号时只可以输入单个字符

6.2 sizeof 和 数组
代码演示:

include <stdio.h>

int main()
{

int a = 0;
int arr[3] = {1,2,3};
char str[] = "hello";
int length=sizeof(arr)/sizeof(int);
int len_a = sizeof(a);
int len_arr = sizeof(arr);
int len_str = sizeof(str);
printf("len_a=%d\n",len_a);
printf("len_arr=%d\n", len_arr);
printf("len_str=%d\n", len_str);
printf("length=%d\n",length);
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行结果:

可以看出:数组长度=数组占内存空间/单个元素所占空间

6.3 ++ 和 - - 运算符
前置++和- -

代码演示:

include <stdio.h>

int main()
{

int a = 0;
int x = ++a;
int y = --a;
printf("%d\n",x);
printf("%d\n",y);
return 0;

}
1
2
3
4
5
6
7
8
9
10
运行结果:

分析:
在int x = ++a;中,先对a 进行自增,然后使用a,也就是表达式的值是a自增之后的值,同理,int y = --a;中,a先自减,再使用

后置++和- -

先使用a,再增加。即上例int x = ++a;中,先使用 a = 0,再增加 a = 1,即 x = 0 , y = 1

相关文章
|
7月前
|
C语言
操作符详解(3)C语言复合赋值操作符单目操作符
操作符详解(3)C语言复合赋值操作符单目操作符
|
7月前
|
编译器 C语言
算术操作符+,-,*,/,%
算术操作符+,-,*,/,%
|
算法 C语言
算数、赋值、单目操作符介绍
算数、赋值、单目操作符介绍
71 0
|
存储 C语言
C语言操作符[算数操作符,赋值操作符,单目操作符,移位操作符]
C语言操作符[算数操作符,赋值操作符,单目操作符,移位操作符]
|
5月前
|
SQL 数据库
IN 操作符
【7月更文挑战第15天】IN 操作符。
44 4
|
7月前
单目操作符
`++` 和 `--` 是编程中的自加和自减操作符。`a++` 表示先使用变量 `a` 的值,然后将其加一,而 `++a` 则是先将 `a` 加一,再使用新值。同样,`--` 操作符也有类似前后置的区别。这两个单目操作符常用于改变和取值之间交替进行的场景。例如,如果 `a=2`,`b=a++` 后 `b` 为 2,`a` 变为 3;而 `b=++a` 会使 `b` 和 `a` 都为 3。
46 1
|
6月前
|
编译器 C语言
操作符详解(1)
操作符详解(1)
41 0
|
7月前
|
编译器 C语言 C++
操作符详解2(二)
本文介绍了编程中的操作符转换和表达式解析规则。当操作数类型不同时,会进行寻常算术转换,按照long double、double、float等类型顺序进行向上转换。表达式求值时,虽然操作符有优先级,但不能决定操作数的求值顺序,例如`a*b + c*d + e+f`中乘法先于加法,但具体计算顺序不确定,可能导致不同结果。同样,如`c++ + c--`这样的表达式也是有歧义的,因为++和--的左右结合性不能确定操作数的获取顺序。文章强调,复杂的表达式可能因编译器差异产生不同结果,应避免使用可能导致非唯一计算路径的表达式以减少潜在风险。
49 0
|
7月前
|
C++
45重载单目运算符
45重载单目运算符
56 0
|
7月前
|
存储 C语言
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)