1、循环语句,主要是有while循环、for循环、do-while循环
2、函数
C语言的函数有库函数和自定义函数两大类,像我们经常使用的打印函数、输入函数、main函数等,这些都是C语言为我们提供的库函数。有的时候为了满足需求,一般会自己定义函数,这些函数被称为自定义函数,自定义函数一般要有函数名、参数、函数体、函数返回值类型,函数一般是写在主函数外部的,可以多次调用,同时也使主函数比较简洁。
给大家看一下这个自定义求和函数的效果:
#include<stdio.h>
int ADD(int x, int y)
{
int sum;
sum = x + y;
printf("sun=%d\n", sum);
return sum;
}//大括号内部的是函数体
int main()
{
int num1, num2;
printf("请输入两个整数:\n");
scanf("%d %d", &num1, &num2);
ADD(num1, num2);
return 0;
}
ADD是这个函数的函数名,ADD前面的int是指函数的返回值类型,ADD后面括号内部的是定义的函数的参数,且定义了参数类型,大括号内部的是函数体。
运行效果:
3、数组
数组:一组相同类型元素的集合
以“int arr[10]”为例,来介绍一下,int是指该数组的元素类型是int,arr是数组名,10是指数组大小,当然,在定义一个数组的时候,不一定要给出确切的数组元素个数,可以在后面列举数组元素,系统会计算数组元素个数。
数组的下标从0开始,依次递增,最大是n-1,当调用下标为n的元素的时候,实际上是引用的第n+1个元素,如果想要打印所有的数组元素,用循环语句来实现。
#include<stdio.h>
int main()
{
int i,k;
int arr[5] = {23,34,45,56,67};
for (i = 0; i <= 4; i++)
{
k = i + 1;
printf("第%d个数组元素是:%d\n", k,arr[i]);
}
return 0;
}
运行结果:
4、操作符
(1)算术操作符
“+”、“-”、“*”、“/”、“%”
#include<stdio.h>
int main()
{
int num1= 9;
int num2=2;
printf("num1对num2进行取模运算的结果是:%d\n", num1 % num2);
printf("num1对num2进行除法运算的结果是:%d\n", num1/num2);
return 0;
}
运行结果:
(2)移位操作符
"<<":左移操作符;">>":右移操作符。移位操作符移的是二进制位。
#include<stdio.h>
int main()
{
int num1 = 8;
int num2 = 7;
printf("num1的左移一位得到:%d\n", num1 << 1);
printf("num1的左移两位得到:%d\n", num1 << 2);
printf("num2的右移一位得到:%d\n", num2 >> 1);
printf("num2的右移两位得到:%d\n", num2 >> 2);
return 0;
}
运行结果:
在使用移位操作符的时候,基本表达式如下:num+移位操作符+移位位数。
关于移位操作符具体运算的过程,先按下不表。
(3)位操作符:“&”、“|”、“^”
“&”:按位与。仍是二进制位,只要有一个0,进行与运算的结果就为假,就是0。
#include <stdio.h>
int main()
{
int num1 = 2;//00000000000000000000000000000010
int num2 = 3;//00000000000000000000000000000011
int num3 = 0;//00000000000000000000000000000010
num3 = num1 & num2;
printf("%d\n", num3);
return 0;
}
运行结果:
“|”:按位或。有一个是真,就是真。
“^”:按位异或。对应的二进制位相同为0,相异为1。
按位或和按位异或运算就不展示代码了。
(4)赋值操作符
“=”、“+=”、“-=”、“&=”、“*=”、“/=”、“^=”、“|=”、“<<=”、“>>=”。
(5)单目操作符
“!”:逻辑反操作、“-”:取负、“&”:取地址、“sizeof”:计算变量或者类型所占空间大小
#include <stdio.h>
int main()
{
printf("int类型所占字节数:%d\n", sizeof(int));
//计算类型所占字节数
float num1 = 3.14f;
printf("num1变量所占字节数:%d\n", sizeof(num1));
//计算变量所占空间大小
int arr[10] = {0};
int l = 0;
l = sizeof(arr)/ sizeof(arr[0]);
printf("数组大小为:%d\n", l);
return 0;
}
“~”:对一个数进行按位取反。
#include<stdio.h>
int main()
{
int num1 = 1;
int num2 = ~num1;
printf("%d\n", num2);
//num1=1=00000000000000000000000000000001
//num2=-2=11111111111111111111111111111110(补码)
// =11111111111111111111111111111101(反码)
// =10000000000000000000000000000010(原码)
// =-2(十进制)
return 0;
}
运行结果:
在进行按位取反操作的时候,一定要注意是针对二进制位进行的操作,在这里简单解释一下为什么最后对num2是等于-2,num2的补码、反码、原码我已经注释在代码里了,计算机在存储的时候,不管是正数还是负数,存储的都是数字的补码,对于占四个字节的有符号整数而言,第32位数字是表示正负的,0代表正数,1代表负数。对于正数而言,它的原码、反码、补码都是相同的,但是负数并不是这样子的,对于负数而言,原码符号位不变,其他位按位取反,得到该负数的反码,反码再加一得到其补码,然后负数以补码的形式存储在计算机中。这个地方得到的num2的补码后,还需要进行转换,得到其对应的十进制数字。
“++”:前置、后置++
前置++是先使用值,再进行自加;后置++是先进行自加,再使用值。
#include<stdio.h>
int main()
{
int a = 8;
printf("b=%d\n", a++);//后置加加,先使用再自加
printf("a=%d\n", a);
printf("c=%d\n", ++a);//前置加加,先自加再使用
return 0;
}
运行结果:
“--”:前置、后置--,用法和“++”类似,就不再赘述了。
“*”:间接访问操作符,这里先按下不表;“(类型)”:进行强制类型转换。
(6)关系操作符
“<”、“>”、“>=”、“<=”、“!=”(用于测试不相等)、“==”(用于测试相等)。
(7)逻辑操作符
“&&”(逻辑与)、“||”(逻辑或)。这两个逻辑操作符进行的是逻辑操作,得到的是逻辑值。
(8)条件操作符(三目操作符)
exp 1?exp 2:exp 3。
#include<stdio.h>
int main()
{
int num1 = 89;
int num2 = 6;
int k=(num1 > num2) ? num1 : num2;
printf("k=%d\n", k);
return 0;
}
运行结果:
(9)逗号表达式
exp1,exp2,exp3,exp4......expN
(10)下标引用、函数调用、结构成员
“[]”、“()”、“.”、“->”。
以上内容整理自:
坚持学习,坚持输出,如果读者有发现问题,欢迎批评指正哦!