C语言入门part2—大致知识点梳理(中篇)
关键字: 选择语句,循环语句,函数,数组,操作符,if(a >= 15 && a <= 20)和 if( 15 <= a <= 20)等
选择语句
c语言中执行代码自顶向下
选择语句分单分支,多分支
if(表达式)
{
语句块;//可写多条语句
}
//1.如果不写{}则默认执行if 下面的一条语句;
2. 注意else的匹配,else只会和最近的一条if语句匹配;
3. 当表达式为真时,执行语句块
BY THE WAY
在C语言中只有0为假,任何非0的数都为真
if(input==1) 判断input ==1是否为真,
if(input)判断input是否为真(input为非0)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if (a == 1)//若a=1则输出123,a!=1则输出321
{
printf("123\n");
}
else
{
printf("321\n");
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if (a )//判断a是否为真,若为真(a为非0)则输出123,为假(a=0)输出321
{
printf("123\n");
}
else
{
printf("321\n");
}
return 0;
}
循环语句
while(表达式)
{
语句块;//满足表达式,则循环语句块
}
do
{
语句块;//至少执行一次,先执行语句块,判断是否满足表达式,满足则继续执行语句块,再判断,如此循环直至满足不了表达式
}while(表达式);
for(表达式1;表达式2;表达式3)//表达式1表初始化,表达式2判断语句,表达式3表步进
{
语句块;
}//执行顺序,先表达式1(整个循环过程中只执行一次),再表达式2,再语句块,再表达式3如此循环
函数
函数语法
返回值类型 函数名(参数1,参数2)//C语言命名函数首字母大写 eg.Add,AddTwoNum或Add_two_num(驼峰式).括号中放参数列表(参数全放进去),将其中的参数叫形参
{
实现功能;
return 返回值;
}
例子output函数实现输出
一般将函数放在main函数前面
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Output(int arr[], int len)//输出函数
{
int i = 0;
for (i = 0; i < len; i++)
{
printf("%d\t", arr[i]);
}
}
void main()
{
int a[] = { 1, 2 };
int b[] = { 3, 4 };
int c[2];
int i = 0;
int len = sizeof(a) / sizeof(a[0]);
for (i = 0; i <len; i++)
{
c[i] = a[i];
a[i] = b[i];
b[i] = c[i];
}
Output(a, len);
printf("\n");
Output(b, len);
}
数组
- 存放一组相同数据类型的集合,当定义一个数组之后,如果没有被初始化,那么默认值是随机值0xccccc,因为未初始化的局部变量的随机值都是0xccccc(栈的随机值),ps:堆的随机值都是0xcdcdcd
- Int len=sizeof(arr)/sizeof(arr[0]);sizeof(arr)/数组名,代表整个数组字节大小sizeof(arr[0])第一个数组元素类型字节大小,相除就是数组长度
- 数组访问不要越界
函数操作符
-
算数操作符:+, -,*,/,%(模)
-
移位操作符: >>右移 , <<左移
eg:15>>1
0000 0000 0000 0000 0000 0000 0000 1111 15的二进制
0000 0000 0000 0000 0000 0000 0000 0111 右移后最高位补符号位
%d打印结果为7
eg:-1>>1
1000 0000 0000 0000 0000 0000 0000 0001原码
1111 1111 1111 1111 1111 1111 1111 1111补码右移后
1111 1111 1111 1111 1111 1111 1111 1111 最高位补符号位
%d打印结果为-1- 左移右边统一补0
-
位操作符:& 按位与,^ 按位异或,| 按位或
-
赋值操作符:=,+=,-=,*=,/=,&=,^= ,|=,<<=,>>=
注意: a+=1相当于a=a+1
-
单目操作符:常用的有
-
“ ! ” 逻辑反
-
“ ~ ”对一个数的二进制按位取反
-
“ & ” 取地址
-
“ sizeof ” 操作数的类型长度(以字节为单位)
-
“ – ” 前置、后置–
-
“ ++ ” 前置、后置++
-
“ * ” 间接访问操作符(解引用操作符)
int a=10;
printf(“%d\n”,!a);//(a的真值为10,C语言中0为假,非0都为真,所以a为真,!a为假,打印出来!a为0)
printf(“%d\n”,!!a);//(双重否定表肯定,结果为1)
int a=1;
printf(“%d\n”,~a);//结果为-1(1的二进制1000 0000 0000 0000 0000 0000 0000 0001原码
1111 1111 1111 1111 1111 1111 1111 1111补码,所以结果为-1)
a–(当前语句执行完即分号结束后再–)和–a(执行完之前就–)
int b=a--;//第一步b=a,第二步a=a-1
if(a >= 15 && a <= 20)和if( 15 <= a <= 20)
int main()
{
int a = 10;
if(a >= 15 && a <= 20)// if( 15 <= a <= 20)运行的出来,但结果错误,会输出is true,因为这样写系统默认先比较10和15,15<=10为假,所以结果为0,第二步判断0<=20是否为真,为真所以输出is true
{
printf("is ture\n");
}
else
{
printf("is not ture\n");
}
return 0;
}
- 条件操作符(三目运算符)
int Max(int x,int y)
{
return x>y?x;y;//(x是否大于y,大于返回x,小于返回y)
}
- 逗号表达式
exp1,exp2,…,expn整个表达式的结果为最后一个表达式
int ch = (10,20,30,40);
printf("%d\n",ch);//打印结果为40