C语言入门(全)

C语言入门

Author: XFFer_
-网易云课堂


一 数据类型、运算符、表达式的介绍

1、常量和变量、整型、实型、字符型

  • 新建项目

  • 一个解决方案下可包含多个项目

运行快捷键 ctrl+fn+F5

添加debug断点快捷键 fn+F9

在debug模式下运行下一步fn+F10

换行语句\n 单行注释// 多行注释/* */

C语言每行语句的末尾都要有;

2、数据类型

字节越大表达范围越大(标注的前为32位后为64位)

  • 基本类型

    • 数值类型

      • 整型

        • 短整型short 2/2

        • 整型int 4/4

        • 长整型long 4/8

      • 浮点型

        • 单精度型float 4/4

        • 双精度型double 8/8

    • 字符类型char 1/1

  • 构造类型

    • 数组

    • 结构体struct

    • 共用体union

    • 枚举类型enum

  • 指针类型

  • 空类型void

3、常量

在程序运行中其值不变的量

150;	//整型变量
12.3;	//实型变量(浮点型变量)
'a';	//字符常量

4、变量

组成:

标志符:由字母,数字,下划线组成,并且第一个字符为字母或下划线。

保留字:系统保留起来有特殊用途,不能作标识符使用。

变量名是标识符,变量名区分大小写

5、整型数据

1)整型常量
123;
-456;	//(十进制)
012;	//(八进制,以0开头的数字)
0x123;	//(十六进制,以0x开头)
2)整型变量
  • 基本型 int (4字节)

  • 短整型 short int short(2字节)

  • 长整型 long int long

  • 无符号型unsigned int unsigned short unsigned long 只能保存不带符号的数字,不能存负数 范围大一倍

sizeof 确定一个类型变量在内存中占多少字节。

printf("abc这个变量占的字节数是%d\n",sizeof(abc));

6、实型数据(浮点型数据)

1)实型常量
2.9;	//十进制浮点数
168E2;
168E-2;	//指数形式浮点数;在内存中实型数据以指数形式存储,E前/后 分开存储
2)实型变量
  • 单精度变量float 一般提供7位有效数字

  • 双精度变量double 一般提供15-16位有效数字

printf中%f用来输出10进制的浮点数,%.20f表示保留二十位小数的浮点数。

7、字符型数据(一个字节)

1)常规字符:用单引号引起来的一个字符
2)特殊字符转义字符:以\开头的字符序列
  • \f 换页

  • \n 换行

  • \\ 反斜杠

  • \' 单引号字符

  • \" 双引号字符

3)字符变量:只能保存一个字符char

因为一个字符型变量在内存中只占一个字节

char c1,c2,c3;
c1 = 'a';	//事实上是把字符对应的ascii码保存在了内存中
c2 = 'b';
c3 = '\"';

ASCII码 对照表

字符数据即能以字符形式输出,也能以ascii表对应的整数形式输出

printf%c用来输出字符型数据

8、字符型常量 (两个字节)

""引起来的一堆字符


c1 = 'a';

c2 = "a";

在内存中

a 字符c1(1个字节)

a``\0 字符串c2(2个字节)

\0 字符串结束标记,在printf时并不输出。

9、变量赋初值

int a, b, c = 6;	//只给c赋值,c语言中变量要先定义后使用

10、数值型数据的混合运算

系统中不同数据类型运算时,系统会尝试将类型统一。

系统会选取变量中能表达最大数字的变量,作为转化的最大类型。

double <-- float
double <-- long <-- unsigned <-- int <-- char,short

11、C语言的运算符

1)算术运算符和算术表达式

+-*/%(取余,也叫模运算符,该运算符两侧都要求为整数)

两整数相除,系统会舍弃小数部分。

优先级问题:先乘除后加减,优先级相同时,按顺序计算。

2)赋值运算符: =
3)强制类型转换运算符:将一个表达式转换成所需要的类型。强制类型转换得到的是一个所转换到的类型的中间变量。
  • 一般形式:(类型)(表达式)
int a = 10;
double b;
b = (double)a;	
//a本身类型并没有变化而是整个结果的类型发生变化赋值给了b

两种类型转换

  1. 自动类型转换

  2. 强制类型转换

4)自增和自减操作符 ++自增 --自减

i++相当于i自身加了1,然后结果再赋给i。

用于循环语句中给自己加一减一

int i;
i++;	//先用后加
++i;	//先加后用
运算优先级

5)赋值运算符和赋值表达式

赋值运算符 = : 将等号右边的值赋给等号左边的变量,等号左边是个变量(给变量一个值或者改变变量到某一个值)。

//几个概念
char a;	//这个叫变量定义,系统会给a分配一个字节的内存,内存里面的值不确定
char a = 90;//这个叫变量定义,同时给变量赋初值(定义时初始化)
                     //字符的范围是-128到+127
a = 900//赋值语句。会造成溢出,溢出后a里面的内容就会变得不可预料

赋值的原则:类型要相同,类型不同的用强制类型转换,必须明确知道不会溢出。

复合的赋值运算符(具有从右到左结合性):

在赋值运算符 = 之前加上其他运算符,构成了复合的赋值运算符*(复合的赋值运算符的两个运算符之间必须紧挨着不能用空格分开)*

  • +=a += 3 相当于 a = a + 3

  • *=: x *= y + 8 相当于 x = x * (y + 8) //如果*=右侧是个表达式的话,则相当于该表达式有括号。

  • %=:近似上述。

赋值表达式(复合的赋值表达式)本身也是有值的 —— 表达式的值等于等号右边的值

6)逗号运算符和逗号表达式

逗号运算符:将两个表达式连接起来;它的优先级是最低的!

格式表达式1,表达式2

求解过程:先求解表达式1的值再求解表达式2,整个表达式的值是表达式2的值

int a;
a = 3*5, a*4    //结果是a=15, 整个表达式的值为60

逗号表达式的扩展形式

表达式1, 表达式2, ... 表达式N

二 程序的基本结构和C语言的语句

不同的字符所占的字节是不同的。

ASCII码:
一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。8bit()=1byte(字节)。
UTF-8编码:
一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码:
一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:
英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

1、语句的分类

  • 控制语句能够控制程序的执行流程,比如在一定的条件下执行某些语句,在另外的条件下,不执行该语句。

  • 函数调用语句由一个函数调用末尾增加个分号构成的语句。

  • 表达式语句由一个表达式构成的语句。

  • 空语句就一个分号。

  • 复合语句用{}括起来的语句。

⚠️ 注意点
  • C语言允许在一行上写几个语句。

  • C语言允许一个语句拆开几行写。(上一行用\结尾,进入下一行,这两行组成一个完整行)

printf(“断点停在\
这里”)
1)程序的三种基本结构:
  • 顺序结构:先执行A操作再执行B操作;

  • 选择结构:条件为真执行A操作,条件为假执行B操作;

if(3 >1)
{
   
	printf(3 > 1\n”);
}
else
{
   	
	printf(3 < 1\n”);
}
//补充:多分枝选择结构switch
int k = 5;
switch(k)
{
   
case 1:
	{
   
		printf(“icount =1\n”);
	}
	break;
case 5:
	{
   
		printf(“icount = 5\n”);
	}
	break;
}
  • 循环结构:

    • 当型循环结构:先判断条件,才决定是否执行A操作,当P条件成立时,就一直反复的执行A操作,知道条件为假才停止循环。
int icount = 5;
while(icount >= 0)
{
   
	printf(“icount = %d\n:,icount);
	icount -= 1;
}
  • 循环结构

    • 直到型循环结构:先执行A操作,再判断条件,条件满足时反复执行操作,知道判断条件P为假停止循环。(至少执行一次A操作)
int icount = 5;
do
{
   	
	printf(“icount = %d\n”,icount);
	icount -= 1;
}while(icount >= 0);

2、赋值语句的特殊写法

printf(“x=8的值是%d”, x=8);
int a = 3, b = 4;
int x;	
if ( (a = b) > 0)
	x = 4;

3、数据的输出

putchar(c): 向屏幕输出一个字符,只能输出字符。c可以是个字符型变量,也可以是个整形变量。

#include< >预编译命令,作用就是将某些文件包含到用户的源文件中,也就相当于把某个文件中的内容原封不动的贴到这个位置。

#include <stdio.h>       //<>是去系统目录中找头文件
#include “stdio.h”        //“”在当前目录中查找,找不到再到系统中查找。“”用于自己写的头文件,让系统优先使用当前目录中定义的头文件

stdio.h //标准的I/O库;stdio.h叫头文件(head)

printf()函数:向屏幕输出若干任意类型的数据。

格式:printf(格式控制,输出表列);

**格式控制:**用双引号扩起来的字符串。

格式字符:

  • %d:以十进制数形式输出一个数字;

  • %o:以八进制数形式输出一个数字;

  • %x:以十六进制数形式输出一个数字;

  • %c:以字符形式输出一个数字;

  • %f:以浮点数形式输出一个数字;

  • %u:以十进制数形式输出一个unsigned型(正数)数据;

  • %s:输出一个字符串;(string)

printf中显示%

  1. printf("5%%");

  2. printf("5%c",'%');

  3. printf("5%s","%");

4、数据的输入:从键盘上输入数据。

getchar():执行后等待用户从键盘上输入一个字符,并按回车后程序继续执行。

scanf函数,这是个格式化输入函数,用来输入任何类型的多个数据;

格式:

scanf(格式控制,地址表列);

当输入回车的时候表示输入结束。

int a, b, c;
scanf_s(%d%d%d”,&a,&b,&c);	//&是地址运算符(表示该变量在内存中的地址),表示键盘输入的数据放在a, b, c的地址中。三个输入的数字 之间可以用空格,回车,tab分隔,不能用逗号分隔。
printf(“a+b+c=,a+b+c);

三 逻辑运算和判断选择

1、关系运算符,关系表达式,逻辑运算符,逻辑表达式

1)关系运算符和关系表达式

关系表达式:用关系运算符将两个表达式连接起来的式子就叫关系表达式。

关系表达式的值是一个逻辑值“True(1)”和“False(0)”(布尔值),关系表达式的值是0或者1,也可以认为是True或者False。

2)逻辑运算符和逻辑表达式

逻辑运算符 将 关系表达式 连接起来的 就是逻辑表达式。

双目运算符:要求有两个运算量,分别位于符号两侧。

比如(a > b) && (c > d); (a > b) || (c > d);

!非 是一个单目运算符。比如:! (a > 3);

a && b: 若a和b都为真,则输出为True(1);

a || b: 若a和b有一个为真,则输出为真;

计算机在进行逻辑判断时,不等于0的值全部认为True

总结来说:由系统给出的逻辑运算结果不是0就是1,不可能是其他数值‍♂️,而在逻辑表达式中作为参加逻辑运算的运算对象,是0就表示假,非0就表示真。

if(4 == true)	//假;因为计算机默认true为1
if(4 && 5)		//真,式中4和5都属于逻辑表达式中的运算对象且都不等于0。

逻辑运算符求值问题:在逻辑表达式求解中,不是所有逻辑运算符都会被执行,只有在必须执行下一个逻辑运算符才能求出表达式的结果时,才执行该运算符。

a && b && c	//只有a为真(非0)才需要判断b,只有a,b都为真才判断c。
a || b || c	//只要a为真就不需要判断b和c,只有a,b都不为真才会判断c。

2、if语句详解

1)if常用的三种结构

if语句(选择结构的代表性语句):用来判断给定的条件是否满足,根据判断的结果(真,假)决定执行给出的两种操作之一。

if 的三种格式

  • if (表达式) 语句 如果表达式中的条件满足则执行该语句。

⚠️千万不要在if (条件)后加冒号或分号(和PYTHON有差别),加上后会破坏掉选择关系。

  • if (表达式) 语句1 else 语句2 如果表达式中的条件满足,则执行语句1;否则执行语句2。
if (表达式1) 语句1		//	如果表达式1成立执行语句1...只能执行一个语句!
else if (表达式2) 语句2
else if (表达式3) 语句3
...
else (表达式n) 语句n
2)if语句的嵌套
if ()
	if() 语句1
	
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值