目录
1.常量
-
字面常量
-
Const 修饰的常变量
-
#define定义的标识符常量
-
枚举常量
2.字符串
“hello world\n”这种由双引号引起来的一串字符称为字符串字面值,或简称字符串
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
![](https://i-blog.csdnimg.cn/blog_migrate/64e47250e73ecd7df35e47761e039eca.png)
arr2加0之后:
注: strlen函数返回的是在字符串中’\0’前面出现的字符的个数
3.转义字符
\t是一个字符 \32是一个 \t是一个字符
打印\32对应的字符:
int main()
{
/*printf("%d\n",strlen("c:\test\32\test.c"));*/
printf("%c\n",'\32');
//\32是2个八进制数字
//32作为八进制代表的十进制数字,作为ASCII码值,对应的字符
//32——>十进制3*8+3*1=26——>26对应的字符—>
printf("%c\n",'\132');
//若打印\132——>1*8^2+3^8+2^1=90——>对应字符为Z
return 0;
}
4.选择语句
-
if选择语句
int main()
{
int input=0;
printf("进入大学\n");
printf("你要好好学习吗?(1/0)>:");
scanf("%d",&input);
if(input==1)
printf("好offer\n");
else
printf("卖红薯\n");
return 0;
}
-
while循环语句
int main()
{
int line=0;
printf("学习C语言");
while(line<20000)
{
printf("敲一行代码:%d\n",line);
line++;
}
if(line>=20000)
printf("好offer\n");
return 0;
}
5.函数
分类:自定义函数
库函数
int Add(int x,int y)//int 表示函数的返回类型 Add表示函数名 x y是函数的参数
{
int z=x+y;
return z; //函数体,完成所给的任务——两数相加
}
int main()
{
int a=100;
int b=200;
int num1=10;
int num2=20;
int sum=0;
sum=Add(a,b);
sum=Add(num1,num2);
return 0;
}
6.数组
一组相同类型元素的集合
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};//定义一个存放10个整数数字的数组 arr0-arr9
/*printf("%d\n",arr[4]);*///用下标的形式访问元素
int i=0;
while(i<10)
{
printf("%d ",arr[i]); //打印数组arr0-9的元素
i++;
}
/*char ch[10];
float arr2[5];*/
return 0;
}
7.操作符
算术操作符:
+ - * / %
移位操作符:
<< >>
移(2进制)位操作符
int main()
{
int a=1;
int b=a<<1; //整型1占4个字节,32个bite位 00000000000000000000000000000001
printf("%d\n",b); //b为2
printf("%d\n",a); //a为1
return 0;
}
位操作符:
&(按位与) ^(按位异或) |(按位或)
int main()
{
int a= 3;//011
int b= 5;//101
int c=a&b;//001
printf("%d\n",c);
return 0;
}
//异或 对应的二进制位相同,则为0
// 对应的二进制位相异,则为1
赋值操作符:
= += -=
单目操作符:
!逻辑反操作 - + & ++ -- * (类型)强制类型转换
sizeof // 计算的是变量/类型所占的空间大小,单位是字节
int main()
{
int a=0;//4个字节,32bite
int b=~a;
//~——按(二进制)位取反
//00000000000000000000000000000000
//11111111111111111111111111111111
//原码 反码 补码
//正数的原码 反码 补码相同
//负数在内存中存储时,存的是二进制的补码;只要是整数,内存中存的都是补码
//所以先-1,得到反码,再符号位不变其余位取反得到原码
//11111111111111111111111111111110
//10000000000000000000000000000001——》-1
printf("%d\n",b);//打印的是b的原码
return 0;
}
-- ++分为前置和后置,两者区别:
int main()
{
int a=10;
int b=a++;//后置++,先使用,再++。a先赋给b,a再++
printf("a=%d b=%d\n",a,b);
//a=11,b=10
return 0;
}
int main()
{
int a=10;
int b=++a;//前置++,先++,再使用。a先++,再赋给b
printf("a=%d b=%d\n",a,b);
//a=11,b=11
return 0;
}
类型强制转换
int main()
{
int a=(int)3.14;
return 0;
}
关系操作符:
> >= < <= != ==
逻辑操作符 :
&&(逻辑与) ||(逻辑或)
int main()
{
//真-非0
//假-0
int a=3;
int b=5;
int c=a&&b;
printf("%d\n",c);//c=1
return 0;
}
条件操作符(三目操作符):
exp1?exp2:exp3 //若exp1为真,取exp2,否则取exp3
下标引用:
[ ]
函数调用:
函数调用 add(a,b)
8.常见关键字:
auto 局部变量前面都会有,故省略
break结束循环
typedef--类型重定义 例typedef unsigned int u_int;
Static:
void test()
{
static int a=1;//a是一个静态的局部变量
//static修饰局部变量,局部变量的生命周期变长,出作用域不销毁
a++;
printf("a=%d\n",a);//23456
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
//Static 修饰全局变量改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用
出了源文件就没法使用了
//static修饰函数,也是改变了函数的作用域(说法不准确),static修饰函数改变了函数的链接属性,没有static修饰的函数
具有外部链接属性(外部的源文件使用函数声明一下就可以用),static修饰函数具有内部链接属性,不能再被外部的源文件链接
#define 定义标识符常量 #define MAX 100
#define可以定义宏——带参数
//利用宏定义比较两数的大小
#define MAX(X,Y) X>Y?X:Y
int main()
{
int a=10;
int b=20;
int max=MAX(a,b); //max=a>b?a:b max=20
printf("%d\n",max);
return 0;
}