操作符详解

简介: 操作符详解

进制与进制转化

十进制

1. 10进制中满10进1。

2. 10进制的数字每⼀位都是0~9的数字组成。

例如:123=1*10^(3-1)+2*10^(2-1)+3*10^(1-1)

二进制

1. 2进制中满2进1。

2. 2进制的数字每⼀位都是0~1的数字组成。

例如:1101=1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1)

十六进制

1. 16进制的数字每⼀位是0~9,a ~f 。

2. 16进制表示的时候前面加0X。

十进制转化成二进制

二进制转化成八进制

1. 在2进制转8进制数的时候,从2进制序列中,右边低位开始向左每3个2进制位会换算⼀个8进制位,剩余不够3个2进制位的直接换算。

2. 0开头的数字,会被当做8进制。

逗号表达式

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

2. 逗号表达式,从左向右依次执行。

3. 整个表达式的结果是最后⼀个表达式的结果。

//代码1
int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);//逗号表达式
c是多少?//13
 
//代码2
if (a =b + 1, c=a / 2, d > 0)//执行

下标访问与函数调用

[ ] 下标引用操作符

int arr[10];//创建数组
arr[9] = 10;//实⽤下标引⽤操作符。
[ ]的两个操作数是arr和9。

()函数调用操作符

#include <stdio.h>
void test1()
{
 printf("hehe\n");
}
void test2(const char *str)
{
 printf("%s\n", str);
}
int main()
{
 test1(); //这⾥的()就是作为函数调⽤操作符。
 test2("hello bit.");//这⾥的()就是函数调⽤操作符。
 return 0;
}

结构成员访问操作符

结构体概念

1. 结构是⼀些值的集合,这些值称为成员变量

2. 结构的每个成员可以是不同类型的变量,如: 标量、数组、指针,甚至是其他结构体。

结构的声明

struct student
{
    char name[20];
    char sex[10];
    int age;
    char id[16];
}s4,s5,s6;//s4,s5,s6都是全局变量
struct student s7 //s7是全局变量
int main()
{
    struct student s1;
    struct student s2;
    struct student s3;
    //s1,s2,s3都是局部变量
}

结构体变量初始化与打印

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  struct point
  {
    int x;
    int y;
  };
  struct point s1 = { 1,2 };//相同类型初始化
  printf("%d %d\n", s1.x, s1.y);//打印结构体
 
  struct student
  {
    char name[20];
    int age;
    char male[15];
    int id;
  };
  struct student p1 = { "黄舜禹",19,"男",202366 };//不同类型初始化
  struct student p2 = { .name = "黄舜禹2",.age = 18,.male = "女",.id = 202367 };//指定顺序初始化
  printf("%s %d %s %d\n", p1.name, p1.age, p1.male, p2.id);//打印结构体
 
  struct node
  {
    int num;
    struct point;
    struct student;
  };
  struct node w1= { 20,{1,2},{ "黄舜禹",19,"男",20231111066 }};//结构体嵌套初始化
  return 0;
}

操作符的属性

优先级

1. 如果⼀个表达式包含多个运算符,哪个运算符应该优先执行,各种运算符的优先级是 不⼀样的。

2. 记住常用的几个操作符优先级即可。

1.圆括号( () )
2.⾃增运算符( ++ ),⾃减运算符( -- )
3.单⽬运算符( + 和 - )
4.乘法( * ),除法( / )
5.加法( + ),减法( - )
6.关系运算符( < 、 > 等)
7.赋值运算符( = )

结合性

1. 如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符是左结合,还是右结合,决定执行顺序。

2. 大部分运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),比如赋值运算符( = )。

相关文章
|
7月前
|
存储 C++
C/C++中位操作符(&,|,^,~)的详解使用
C/C++中位操作符(&,|,^,~)的详解使用
|
编译器 C语言 索引
操作符详解下(非常详细)
操作符详解下(非常详细)
51 0
|
4月前
|
编译器
|
5月前
|
SQL 数据库
IN 操作符
【7月更文挑战第15天】IN 操作符。
46 4
|
6月前
|
编译器 C语言
操作符详解(1)
操作符详解(1)
41 0
|
7月前
|
编译器 C语言 C++
操作符详解2(二)
本文介绍了编程中的操作符转换和表达式解析规则。当操作数类型不同时,会进行寻常算术转换,按照long double、double、float等类型顺序进行向上转换。表达式求值时,虽然操作符有优先级,但不能决定操作数的求值顺序,例如`a*b + c*d + e+f`中乘法先于加法,但具体计算顺序不确定,可能导致不同结果。同样,如`c++ + c--`这样的表达式也是有歧义的,因为++和--的左右结合性不能确定操作数的获取顺序。文章强调,复杂的表达式可能因编译器差异产生不同结果,应避免使用可能导致非唯一计算路径的表达式以减少潜在风险。
51 0
|
7月前
|
存储 程序员 C语言
操作符详解1(二)
该内容是一个关于C语言操作符和结构体的教程摘要。首先提到了加法操作符`+`的使用,并给出了一种不使用临时变量交换两个数的方法。接着讨论了如何计算整数的二进制表示中1的个数,通过位操作符实现。然后介绍了逗号表达式和函数调用操作符`()`,以及结构体成员访问操作符`.`和`-&gt;`,用于访问和修改结构体内的成员变量。文章以讲解结构体的声明、初始化和通过指针访问结构体成员为重点,展示了如何直接和间接地操作结构体数据。
56 0
|
7月前
|
存储 C语言
操作符详解2(一)
C语言操作符具有优先级和结合性,决定表达式求值顺序。优先级高的运算符先执行,相同优先级时看结合性,左结合从左到右,右结合从右到左。例如,3+4*5中乘法优先级高于加法,5*6/2中乘法和除法优先级相同,但都是左结合,所以先计算5*6。圆括号具有最高优先级,可改变其他运算符优先级。表达式求值时,整型运算以缺省整型精度进行,小整型值会被提升为int或unsigned int。正数提升时高位补0,负数提升时高位补1,无符号整型提升始终补0。
65 0
|
编译器 C语言 索引
S5——C操作符详解,你都知道吗? 下
讲解主要内容: 1. 各种操作符的介绍 2. 表达式求值 以下让我们开始正式重新认识和理解操作符吧!
|
C语言 索引
【C】操作符详解
今天给大家带来一篇关于C语言操作符的详细介绍,在C语言中操作符主要有以下几种: