进制与进制转化
十进制
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. 大部分运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),比如赋值运算符( = )。