while循环
#include<stdio.h>
int main()
{
int line = 0;
printf("来武汉混\n");
//循环10次
while (line < 10)//条件语句 当line=10时跳出循环
{
printf("%d.敲一行代码\n",line+1);
line++;
}
printf("好生活!!!");
return 0;
}
函数
#include<stdio.h>
//自定义函数 Sum()
int Sum(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int num1 = 100, num2 = 200, num3 = 0, num4 = 0;
num3 = num1 + num2;
printf("num1 + num2=%d\n", num3);
num4 = Sum(num1, num2);
printf("sum=%d\n", num3);//库函数printf()
return 0;
}
数组
#include<stdio.h>
int main()
{
//定义一个int类型的数组 长度为10
int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
int i = 0;
while (i < 10)
{
//数组下标从0开始
//arr[i] 通过下标访问数组元素
printf("第[%d]数字:%d\n", i, arr[i]);
i++;
}
return 0;
}
操作符
算术操作符
+ - * / %
#include<stdio.h>
int main()
{
float a;
int b;
a = 1 + 2;//加法
printf("1 + 2 = %f\n", a);
a = 10 - 3;//减法
printf("10 - 3 = %f\n", a);
a = 2 * 6;//乘法
printf("2 * 6 = %f\n", a);
a = 5.0 / 2.0;//除法
printf("5 / 2 = %f\n", a);
b = 5 % 2;//取模/计算余数
printf("5 %% 2 = %d\n", b);
return 0;
}
示例结果
位移操作符
>> <<
#include<stdio.h>
int main()
{
//移(2进制)位操作符
//左移<<
//右移>>
int a = 1;
//整型1占4个字节-32个bit位
//a的二进制序列->00000000000000000000000000000001
int b = a << 1;//左移1位 a->00000000000000000000000000000010
printf("%d\n", b);//b=2
return 0;
}
示例结果
位操作符:
& ^ |
#include<stdio.h>
int main()
{
//2进制 位操作
//& 按位 与
//| 按位 或
//^ 按位 异或
int a = 3;//011
int b = 5;//101
int c = a & b;
//011
//101
//001 等于十进制1
printf("a & b=%d\n", c);
c = a | b;
//011
//101
//111 等于十进制7
printf("a | b=%d\n", c);
//异或的计算规律:
//对应的二进制位相同,则为0
//对应的二进制位相异,则为1
c = a ^ b;
//011
//101
//110 等于十进制6
printf("a ^ b=%d\n", c);
return 0;
}
赋值操作符
*= += -= = /= &= ^= != >>= <<=
#include<stdio.h>
int main()
{
int a = 10;
a = 20;//赋值 == 是比较
//复合赋值符
a += 10;//等同于 a=a+10
a -= 20;//等同于 a=a-10
a &= 2;//等同于 a=a&2
return 0;
}
单目操作符
符号 | 说明 |
---|---|
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
– | 前置、后置– |
++ | 前置、后置++ |
* | 间接访问操作符 |
(类型) | 强制转换类型 |
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
//C语言中 0:假 非0:真
printf("a = %d\n", a);
printf("!a = %d\n", !a);//! 逻辑反操作
int c = -5 + 3;//- 负数
printf("-5 + 3 = %d\n", c);
//sizeof 计算所占空间的大小,单位是字节
printf("sizeof(a)=%d\n", sizeof(a));//4
printf("sizeof a=%d\n", sizeof a);//当a为变量是可省略()
int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
printf("sizeof(arr)=%d\n", sizeof(arr));//4*10=40
int d = sizeof(arr) / sizeof(arr[0]);//计算数组长度
printf("计算数组的长度=%d\n", d);
//~:按位(二进制位)取反
int m = 0;
// m ->000000000000000000000000
// ~m ->111111111111111111111111
// 反码->111111111111111111111110
//原码->100000000000000000000001
//二进制位 第一位是补码 0 正 1 负
int n = ~m;//-1
printf("~0=%d\n", n);//使用的,打印的是这个数的原码
//++
int k = 10;
int t = k++;//后++:先把k的值10赋值给t,然后再++
printf("t=%d k=%d\n", t, k);
t = ++k;//先++:k先+1然后再把k赋值给t
printf("t=%d k=%d\n", t, k);
// (类型)转换
int h = 3.15;
//printf("3.15=%d\n", h);//代码提示有警告
printf("强制转换3.15=%d\n", (int)h);//强制转换为int类型
return 0;
}
关系操作符
逻辑操作符
#include<stdio.h>
int main()
{
//真-非0
//假-0
//&& 逻辑与
int a = 3;
int b = 5;
int c = 0;
int d = a && b;// a为真 并且 b为真 结果为真
printf("a && b=%d\n", d);
d = c && a;// c为假 并且 a为真 结果为假
printf("a && b=%d\n", d);
//||:逻辑或,只需有一个为真,结果为真
d = c || a;
printf("c || a=%d\n", d);
return 0;
}
条件操作符
#include<stdio.h>
int main()
{
//比较a b 谁最大
int a = 10;
int b = 20;
int max = 0;
//方法一:比较大小
if (a > b)
max = a;
else
max = b;
printf("max=%d\n", max);
//方法二:三目运算
max = a > b ? a : b;//条件操作符
printf("max=%d\n", max);
return 0;
}
下标引用、函数调用和结构成员
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
int arr[] = { 6,0,1,2,3 };
int a = arr[2];//[]-下标引用操作符
printf("a=%d\n", a);
int sum = Add(arr[0], arr[2]);//()-函数调用操作符
printf("sum=%d\n", sum);
return 0;
}
关键字
static
sum.c
static int g_val = 2000;
test.c
#include<stdio.h>
void Test()
{
int a = 0;
static int b = 0;//第一次执行后,后面不在进行赋值0操作
//extern int g_val;//错误,无法解析的外部符号 g_val
//外部函数被static 修饰后 同样也无法使用
a++;
b++;
printf("a=%d\n", a);
printf("b=%d\n\n", b);
}
int main()
{
int a = 0;
while (a < 5)
{
Test();
a++;
}
return 0;
}
示例结果
#define 定义常量和宏
#include<stdio.h>
//#define 定义标识符常量
#define MAXVALUE 100
//定义宏
#define MAX1(X,Y)(X>Y?X:Y)
int Max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int a = 10;
int b = 20;
//MAXVALUE 不可修改
printf("MAX=%d\n", MAXVALUE);
//函数方式
int max = Max(a, b);
printf("max=%d\n", max);
//宏方式
max = MAX1(a, b);//等价于 a>b?a:b
printf("max=%d\n", max);
return 0;
}
示例结果