常量
#define 为定义的标识符常量
#include <stdio.h>
#define hehe 30
int main()
{
int a[hehe] = { 0 };
printf(" % d\n", hehe);
return 0;
}
const 拥有常量属性-修饰常变量
#include <stdio.h>
int main()
{
const int a = 15;
printf("%d\n", a);
return 0;
}
枚举常量-一一列举
枚举关键 - enum
列举出来的数据从0开始按序排列:0 1 2
字符串和转义字符
#include <stdio.h>
int main()
{
char max[] = "in";//数组
char s[] = {'i','n','\0'};//\0是字符串中的结束标志,它是一个转义字符
printf("%s\n", max); //在计算字符长度时不作内容
printf("%s\n",s);
printf(" % d\n",strlen(max));//strlen是计算字符串长度的
return 0;
}
ASCII编码
因为数据在计算机上存储的是二进制数据,所以ascll为表达键盘上128个字符的数据
比如说表达一个空格,一个回车,一个字母
且计算字符的时候\28,\127都为一个字符
如果不想转义时但要输出\时可以\\多打一个斜杠使转义无效,成为一个普通的字符
基础循环语句
#include <stdio.h>
int main()
{
int 实习时间 = 0;
printf("实习%d\n");
while (实习时间 < 28)
{
printf("努力实习一个月\n", 实习时间);
实习时间++;
if (实习时间 >= 28);
}
printf("成为实习优秀实习生\n");
return 0;
}
++意思为实习时间 = 实习时间 + 1
下图为自定义函数
函数的特点就是简化代码,代码复用
#include <stdio.h>
int pa(int x, int y) //自定义函数-设计
{
int z = x + y;
return 0;
}
int main()
{
int num1 = 0;
int num2 = 3;
int sum = 0;
int a = 12;
int b = 48;
sum = pa(num1, num2);
sum = pa(a, b);
sum = pa(2, 3);
printf("sum = %d\n", sum);
return 0;
}
数组
如果要输出整个数组可以使用循环语句
int main()
{
int add[10] = { 1,2,3,4,5,6,7,8,9 ,10 };
//每个数都有一个下标,从0.1.2.3.4.5.6.。。。。
//默认从零开始
int i = 0;
while (i < 10)
{
printf("%d", add[i]);
i++;
}
return 0;
}
操作符
算数操作符
+
-
* 乘
/ 除
%
: % 左右两边的数必须都为整数 取模,除之后剩下的余数
移位操作符
>>
: 右移
<<
: 左移
例1:b = 20
位操作符
&
(按位与)|
(按位或)^
(按位异或)
怎么求一个二进制位中1的个数
#include<stdio.h>
int CountOneBit(unsigned int n){//解决负数无法计算问题,这种运算运算的是补码
int count = 0;
while(n){//类比十进制中每位数的求法
if(n%2 == 1)
count++;
n/=2;
}
return count;
}
int main(){
int n = 0;
int num_1 = 0;
printf("请输入一个数:");
scanf("%d",&n);
num_1 = CountOneBit(n);
printf("%d的二进制序列中有%d个 1",n,num_1);
}
unsigned的作用:
unsigned就是将这个二进制数最高位的符号位变成计数位。下面我们举个例子帮大家理解一下
如果我们输入的是-1
-1%2 == -1
-1/2 = 0
这样输出的count为0
但是我们知道-1的补码是11111111111111111111111111111111
这样我们的代码就局限在正整数
如果加上unsigned 虽然我们输入的是-1 但是程序计算是是按照 unsigned int 的最大值,这样就避免了这个问题
赋值操作符
=
a = b = c
它的意义是将c的值赋给b,再将b的值赋给a。其实这样理解不够准确,其实应该这么写:
a = (b = c)
先将c的值赋给b 然后将这个整体,即b的值赋给a
复合赋值符
+= -= *= \= %= >>= <<= &= |= ^=
单目操作符
!
\-
=
&
(取地址)
sizeof
(操作数的类型长度)
~
(对一个数的二进制位按位取反)
--
++
(前置,后置)
*
(解引用)
(类型)
(强制类型转换)
!的应用
应用!与flag来判断情况做出选择
if(flag){
flag为真进入循环;
}
if(!flag){
flag为假进入循环;
}
条件操作符
a > b ? a : b
[] 下标引用操作符
对于数组 arr[5] = {1,2,3,4,5}
我们一般的用法是:
arr[0],arr[1],arr[2]…..其中arr[0]就代表访问数组中第一个元素,arr[1]代表访问第二个以此类推
关系操作符
>
>=
<=
!=
==