C语言入门part2—大致知识点梳理(中篇)

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

猜你喜欢

转载自blog.csdn.net/qq_43360037/article/details/96428837